在Windows下移除或禁用Tkinter窗口的最大化按钮

2 投票
1 回答
8993 浏览
提问于 2025-04-16 07:55

我在寻找一些建议,想知道如何在Windows下去掉或禁用一个可以调整大小的窗口的最大化按钮。我使用的是Python 2.7。

背景:我有一个可以调整大小的窗口,已经通过窗口的minsize()和maxsize()方法设置了最小和最大尺寸。当用户点击最大化按钮时,窗口会移动到显示器的左上角。这让我的用户感到很困惑,所以我想阻止这种情况发生。

我查找了一些方法来禁用最大化按钮,但这些方法似乎都不适用于可以调整大小的窗口?

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

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

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

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

  5. 我在Python Win32 API邮件列表上发了个问题,看看能否通过我认为Tkinter暴露的hWnd句柄来使用Windows API调用禁用窗口的最大化按钮。

有没有办法在Tkinter执行最大化之前捕捉到这个最大化事件?

Malcolm

1 个回答

4

一种可能的做法是把窗口设置为工具窗口,但这样会有一些副作用;这个窗口就不会出现在任务栏上,而且标题栏会变得很窄。不过,你还是可以通过边缘来调整窗口的大小。

root.attributes("-toolwindow", 1)

关于根属性的更多信息可以在 这本指南中找到。

撰写回答