如何阻止Tkinter Frame缩小以适应其内容?

时间:2009-02-19 03:21:08

标签: python label tkinter frame

这是给我带来麻烦的代码。

f = Frame(root, width=1000, bg="blue")
f.pack(fill=X, expand=True)

l = Label(f, text="hi", width=10, bg="red", fg="white")
l.pack()

如果我用Label标注出行,则Frame会以正确的宽度显示。但是,添加Label似乎会将Frame缩小到Label的大小。有没有办法防止这种情况发生?

1 个答案:

答案 0 :(得分:51)

默认情况下,tk frames 缩小或增长以适应其内容,这是您想要的99%的时间。描述此特征的术语是“几何传播”。使用pack(以及grid f.pack_propagate(0) )时,有command可以打开或关闭几何体传播。

由于您使用的是pack,语法为:

root.pack_propagate(0)

或者pack,具体取决于您实际想要影响的小部件。但是,由于您没有给出框架高度,因此它的默认高度为1像素,因此您仍然可能看不到内部窗口小部件。为了获得您想要的效果,您需要为包含框架提供宽度和高度。

话虽这么说,绝大多数时候你应该让tkinter计算大小。当您关闭几何体传播时,GUI将无法很好地响应分辨率的变化,字体的变化等.tkinter的几何管理器(placegrid和{{1}})非常强大。学会利用这种力量。