Python 使用Tkinter/Tcl设置窗口样式:无退出按钮
我知道Tkinter只是Tcl/Tk上的一个薄层。Tkinter您可以做一些事情来更改windows样式。一个例子是Python 使用Tkinter/Tcl设置窗口样式:无退出按钮,python,windows-7,tkinter,tcl,window-style,Python,Windows 7,Tkinter,Tcl,Window Style,我知道Tkinter只是Tcl/Tk上的一个薄层。Tkinter您可以做一些事情来更改windows样式。一个例子是root.attributes('-toolwindow',True)。这会将窗口样式更改为工具窗口的样式。然而,我希望去一个低一点的水平 我怀疑Tcl/Tk在某个时候引用了Windows。我敢肯定,它必须这样做,以设置窗口样式,并通过扩展Tkinter窗口样式。我试图给Tkinter窗口提供一个我非常确定的WS\u DLGFRAME样式。然而,我不确定如何处理这个问题 我想知道T
root.attributes('-toolwindow',True)
。这会将窗口样式更改为工具窗口的样式。然而,我希望去一个低一点的水平
我怀疑Tcl/Tk在某个时候引用了Windows。我敢肯定,它必须这样做,以设置窗口样式,并通过扩展Tkinter窗口样式。我试图给Tkinter窗口提供一个我非常确定的WS\u DLGFRAME样式。然而,我不确定如何处理这个问题
我想知道Tkinter的Tcl/Tk部分在哪里分配了windows样式,我需要添加什么才能获得这种样式
最终目标是获得一个类似于下面的Tkinter窗口边框样式(请注意,它缺少退出按钮):
这是在Windows7中,顺便说一句。如果您熟悉C,请下载 我快速查看了一下,在这个文件中:
/win/tkWinWm.c
在第3072行(tk859 src.zip
),您拥有函数static int WmAttributesCmd()
,处理您所说的-toolswindow
,稍后由UpdateWrapper()
更新
因此,除非您更改Tk源代码,否则没有简单的方法来更改它
或者,您可以使用FindWindow
并查找Tk的窗口类Tk_WIN_CHILD_class_NAME
定义为TkChild
,然后使用SetWindowLongPtr(GWLP_样式,…)
更改样式(但这需要一些ffi调用C或其他方式)
我自己对Tcl/Tk都不熟悉,所以对此持保留态度。为什么不试试Tcl/Tk社区?以下选项指示窗口管理器不要装饰窗口(即没有标题栏和窗口按钮,没有边框)
一个错误的参数会恢复装饰。谢谢,我对C比TCL更熟悉。这似乎是正确的。另外,针对Tk本身记录一个特性请求:您可以添加这一点,使用这种技术,您可以绘制任何您想要的边界。放置画布,使其填充框架,然后绘制任何你想要的。谢谢,我已经知道这种方法。它的作品,但我试图去一个完全本土的外观。
root.overrideredirect(True)