在 Windows 下删除或禁用可调整大小的 Tkinter 窗口最大化按钮

发布于 2024-10-05 18:47:22 字数 734 浏览 6 评论 0原文

寻求有关如何在 Windows 下删除或禁用可调整大小窗口的最大化按钮的建议。我正在使用适用于 Windows 的 Python 2.7。

背景:我有一个可调整大小的窗口,其最小和最大尺寸通过窗口的 minsize() 和 maxsize() 方法设置。当用户单击最大化按钮时,窗口将移动到显示屏的左上角。这让我的用户感到非常困惑,所以我想阻止这种行为。

我的研究展示了几种禁用最大化按钮的方法 - 但这些技术似乎都不适用于可调整大小的窗口?

  1. 通过 ressized( False, False ) 方法防止窗口调整大小。

  2. 通过 overrideredirect( True ) 方法删除所有窗口的控件(和边框)。

  3. 使用神秘的transient(1)方法(这会在Windows下引发异常)。

  4. 绑定窗口的事件并尝试阻止最大化(更新:当我们的处理程序检测到最大化事件时,Tkinter 已经最大化了窗口。返回“break”或使用 Geometry(size|position) 调整大小并重新定位一个窗口都被忽略)

  5. 我在 Python Win32 API 邮件列表上发布了一个问题,看看我们是否可以使用 Windows API 调用通过 hWnd 句柄禁用窗口的最大化按钮我相信(?)Tkinter 暴露了。

有没有办法可以捕获最大化事件(在 Tkinter 执行之前)?

马尔科姆

Looking for advice on how to remove or disable a resizable window's maximize button under Windows. I'm using Python 2.7 for Windows.

Background: I have a resizable window with min and max sizes set via the window's minsize() and maxsize() methods. When a user clicks the maximize button, the window moves to the upper left of the display. This is very confusing to my users so I would like to prevent that behavior.

My research shows several ways to disable a maximize button - but none of these techniques seem to apply to resizable windows?

  1. Prevent a window from resizing via the resizable( False, False ) method.

  2. Remove all the window's controls (and border) via the overrideredirect( True ) method.

  3. Use the mysterious transient(1) method (this raises an exception under Windows).

  4. Bind the window's event and try to block the maximize (update: Tkinter has already maximized the window by the time our handler detects the maximize event. Returning "break" or using geometry(size|position) to size and re-position a window are both ignored)

  5. I've posted a question on the Python Win32 API mailing list to see if we can use a Windows API call to disable a window's maximize button via the hWnd handle that I believe(?) Tkinter exposes.

Is there a way I can trap the maximize event (BEFORE Tkinter performs it)?

Malcolm

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

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

发布评论

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

评论(1

极度宠爱 2024-10-12 18:47:22

一种可能性是将窗口设置为工具窗口,但这也会带来副作用;该窗口将不再出现在任务栏中,并且将有一个细标题栏。它仍然可以在边缘调整大小。

root.attributes("-toolwindow", 1)

有关根属性的更多信息,请参阅本指南

One possibility is to set the window as a tool window but this also comes with side effects; the window will no longer appear in the taskbar and will have a thin title bar. It will still be able to be resized at the edges.

root.attributes("-toolwindow", 1)

More about the root attributes can be found in this guidebook.

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