Python 使用Tkinter/Tcl设置窗口样式:无退出按钮

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

我知道Tkinter只是Tcl/Tk上的一个薄层。Tkinter您可以做一些事情来更改windows样式。一个例子是
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)