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

问题描述 投票:39回答:1

这是给我麻烦的代码。

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

如果我用标签注释掉行,则框架以正确的宽度显示。但是,添加标签似乎将框架缩小到标签的大小。有办法防止这种情况发生吗?

python label tkinter frame
1个回答
54
投票

默认情况下,packgrid缩小或增大小部件以适合其内容] >>,这是您希望99.9%的时间。描述此功能的术语是“几何传播”。使用command时,有一个pack可以打开或关闭几何传播(对于similar one,则有一个grid)。

由于您正在使用pack,因此语法为:

f.pack_propagate(0)

或者也许是root.pack_propagate(0),具体取决于您实际要影响的小部件。但是,由于未提供框高,因此其默认高度为一像素,因此您仍然可能看不到内部小部件。要获得所需的全部效果,您需要给包含的框架一个宽度和一个高度。

话虽这么说,绝大多数时候您应该让Tkinter计算大小。当您关闭几何图形传播时,您的GUI不能很好地响应分辨率的变化,字体的变化等。Tkinter的几何图形管理器(packplacegrid)非常强大。学会利用这种力量。

© www.soinside.com 2019 - 2024. All rights reserved.