在Windows下移除或禁用Tkinter窗口的最大化按钮
我在寻找一些建议,想知道如何在Windows下去掉或禁用一个可以调整大小的窗口的最大化按钮。我使用的是Python 2.7。
背景:我有一个可以调整大小的窗口,已经通过窗口的minsize()和maxsize()方法设置了最小和最大尺寸。当用户点击最大化按钮时,窗口会移动到显示器的左上角。这让我的用户感到很困惑,所以我想阻止这种情况发生。
我查找了一些方法来禁用最大化按钮,但这些方法似乎都不适用于可以调整大小的窗口?
通过resizable(False, False)方法来防止窗口调整大小。
通过overrideredirect(True)方法去掉窗口的所有控件(和边框)。
使用神秘的transient(1)方法(在Windows下会引发异常)。
绑定窗口的事件,尝试阻止最大化(更新:在我们的处理程序检测到最大化事件时,Tkinter已经将窗口最大化了。返回“break”或使用geometry(size|position)来调整窗口的大小和位置都被忽略了)。
我在Python Win32 API邮件列表上发了个问题,看看能否通过我认为Tkinter暴露的hWnd句柄来使用Windows API调用禁用窗口的最大化按钮。
有没有办法在Tkinter执行最大化之前捕捉到这个最大化事件?
Malcolm
1 个回答
4
一种可能的做法是把窗口设置为工具窗口,但这样会有一些副作用;这个窗口就不会出现在任务栏上,而且标题栏会变得很窄。不过,你还是可以通过边缘来调整窗口的大小。
root.attributes("-toolwindow", 1)
关于根属性的更多信息可以在 这本指南中找到。