Tkinter顶级窗口似乎有两种“模式”:大小由应用程序决定,用户控制大小。请考虑以下代码:
from tkinter import *
class Test(Frame):
def __init__(self,parent):
Frame.__init__(self,parent)
self.b1 = Button(self, text="Button 1",command=self.b1Press)
self.b1.pack()
def b1Press(self):
print("b1Press")
label = Label(self, text="Label")
label.pack()
root = Tk()
ui = Test(root)
ui.pack(fill='both', expand=1)
root.mainloop()
每次按下按钮,可见窗口都会改变大小以适应其他标签。但是,如果我手动调整窗口大小(使用鼠标),则会停止此自动调整大小的行为,从那时起,我必须手动更改窗口大小,以便在添加新按钮时查看它们。
是什么决定了顶层窗口的大小是否受应用程序或用户的控制?
在用户手动调整大小后,应用程序如何重新获得自动调整大小?
答案 0 :(得分:12)
规则非常简单 - 顶级窗口在给定固定大小时具有固定大小,否则“收缩到适合”。
有两种方法可以为顶级窗口提供固定大小:用户可以手动调整大小,或者您的应用程序代码可以调用wm_geometry
以在启动时为其指定大小。
要重置原始行为,请为窗口指定一个空几何。例如:
def __init__(self,parent):
...
self.b2 = Button(self, text="Reset", command=self.b2Press)
self.b2.pack()
def b2Press(self):
self.winfo_toplevel().wm_geometry("")