这是给我带来麻烦的代码.
f = Frame(root, blue") f.pack(fill=X, expand=True) l = Label(f, text="hi", red", fg="white") l.pack()
如果我使用Label注释掉行,则Frame会以正确的宽度显示.但是,添加Label似乎会将Frame缩小到Label的大小.有没有办法防止这种情况发生?
默认情况下,tk帧缩小或增长以适应其内容,这是您想要99%的时间.描述此特征的术语是"几何传播".有一个命令可以在使用时打开或关闭几何体传播pack
(和类似的一样grid
).
由于您使用的是pack,语法如下:
f.pack_propagate(0)
或者pack
,取决于您实际想要影响的小部件.但是,由于您没有给出框架高度,因此它的默认高度为1像素,因此您仍然可能看不到内部窗口小部件.为了获得您想要的效果,您需要为包含框架提供宽度和高度.
话虽这么说,绝大多数时候你应该让tkinter计算大小.当您打开几何传播了你的GUI将不会对分辨率的变化,字体变化等Tkinter的几何管理者很好地响应(grid
,root.pack_propagate(0)
和pack
)是非常强大.学会利用这种力量.