Tkinter中自动调整窗口大小的控制器是什么?

8
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()

每次我按下按钮,可见窗口的大小会改变以适应额外的标签。但是,如果我手动调整窗口大小(用鼠标),那么它就停止了这种自动调整大小的行为,从那时起,我必须手动更改窗口的大小以查看添加的新按钮。
什么决定了toplevel窗口的大小是由应用程序还是用户控制?
应用程序如何在用户手动调整大小后重新获得自动调整大小?
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("")

很好 - 的确是一个简单的答案,但我一直在努力寻找。 - timbod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接