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