3

我知道 Tkinter 只是 Tcl/Tk 上的一个薄层。Tkinter 你可以做一些事情来改变窗口的样式。一个例子是root.attributes('-toolwindow', True)。这会将窗口样式更改为工具窗口的样式。但是,我希望降低一点。

我怀疑在某些时候 Tcl/Tk 会引用 Windows窗口样式。我很确定它必须这样做才能设置窗口样式并扩展 Tkinter 窗口样式。我试图给一个 Tkinter 窗口我很确定是WS_DLGFRAME样式。但是,我不确定如何处理这个问题。

我想知道 Tkinter 的 Tcl/Tk 部分在哪里分配窗口样式,以及我必须添加什么才能获得这种样式。

最终目标是获得如下图所示的 Tkinter 窗口边框样式(注意它缺少退出按钮的原因):

在此处输入图像描述

这是在 Windows 7 中,顺便说一句。

4

2 回答 2

5

以下选项指示窗口管理器不要装饰窗口(即没有标题栏和窗口按钮,加上没有边框)

root.overrideredirect(True)

一个错误的论点恢复了装饰。

于 2011-05-12T10:15:39.720 回答
3

如果您熟悉 C,请下载Tk 源代码

我快速查看了一下,在这个文件中: ./win/tkWinWm.c在第 3072 行(tk859-src.zip),你有函数,正如你所说的那样static int WmAttributesCmd()处理,后来更新为。-toolwindowUpdateWrapper()

所以没有简单的方法来改变它,除非你改变 Tk 源代码。

或者,您可以使用并查找定义FindWindow为的 Tk 窗口类,然后使用来更改样式(但这需要对 C 或其他方式进行一些 ffi 调用)。TK_WIN_CHILD_CLASS_NAMETkChildSetWindowLongPtr( GWLP_STYLE, ...)

我本人对 Tcl/Tk 都不熟悉,所以对它持保留态度。为什么不试试 Tcl/Tk 社区呢?

于 2011-05-12T05:10:10.203 回答