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

发布于 2024-11-07 04:58:39 字数 556 浏览 0 评论 0原文

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

我怀疑在某些时候 Tcl/Tk 引用了 Windows 窗口样式。我很确定必须这样做才能设置窗口样式并扩展 Tkinter 窗口样式。我正在尝试为 Tkinter 窗口提供我非常确定的 WS_DLGFRAME 样式。但是,我不确定如何解决这个问题。

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

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

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

I know that Tkinter is just a thin layer over Tcl/Tk. Tkinter you can do a few things to change the windows styling. One example would be root.attributes('-toolwindow', True). This would change the window style, to that of a tool window. However, I'm looking to go a little bit lower level.

I suspect at some point Tcl/Tk refrences Windows window styles. I'm pretty sure it would have to do this in order to set the window style and by extension the Tkinter window styling. I'm trying to give a Tkinter window what I'm pretty sure is the WS_DLGFRAME style. However, I'm unsure how to approach this.

I'm wondering where in the Tcl/Tk part of Tkinter does it assign windows styles, and what I'd have to add to get this style.

The end goal is to get a Tkinter window border style that looks like the one below (note how it lacks an exit button):

enter image description here

This is in Windows 7, BTW.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦里兽 2024-11-14 04:58:39

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

root.overrideredirect(True)

false 参数将恢复装饰。

The following option instructs the window manager not to decorate the window (i.e no title bar and window buttons, plus no borders)

root.overrideredirect(True)

A false argument restores the decorations.

耶耶耶 2024-11-14 04:58:39

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

我快速查看了一下,在这个文件中:
./win/tkWinWm.c 在第 3072 行 (tk859-src.zip),您有函数 static int WmAttributesCmd(),处理正如您所说,使用 -toolwindow ,稍后由 UpdateWrapper() 更新。

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

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

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

If you are familiar with C, download Tk source code.

I've looked quickly, and in this file:
./win/tkWinWm.c at line 3072 (tk859-src.zip), you have the function static int WmAttributesCmd(), dealing with -toolwindow as you've said, later updated by UpdateWrapper().

So no easy way to change it, unless you change Tk source code.

Alternatively you might be able to use FindWindow and look for Tk's window class TK_WIN_CHILD_CLASS_NAME defined to be TkChild, and then use SetWindowLongPtr( GWLP_STYLE, ...) to change the style (but this requires some ffi call to C or other means).

I myself I'm not familiar with neither Tcl/Tk, so take it with a grain of salt. Why not try the Tcl/Tk community?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文