Tkinter中自动窗口调整大小由什么控制?
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()
每次我按下按钮,窗口的大小就会自动调整,以适应新增的标签。但是,如果我用鼠标手动调整窗口的大小,那么这个自动调整的功能就会停止,从那以后,我必须手动改变窗口的大小,才能看到新添加的按钮。
那么,是什么决定了顶层窗口的大小是由程序控制还是由用户控制呢?
在用户手动调整过窗口大小后,程序如何才能重新获得自动调整的功能呢?
1 个回答
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("")