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

发布于 2021-01-29 15:04:02

这是给我麻烦的代码。

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

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

关注者
0
被浏览
83
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    默认情况下,pack以及grid 缩小或放大一个小部件,以适应其内容
    ,这是你想要什么的时候99.9%。描述此功能的术语是“几何传播”。还有一个命令以打开几何传播或使用时关闭pack(和类似的一个grid)。

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

    f.pack_propagate(0)
    

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

    话虽这么说,绝大多数时候您应该让Tkinter计算大小。当您打开几何传播了你的GUI不会在分辨率的变化反应良好,改变字体等Tkinter的几何管理器(packplacegrid)是非常强大。学会利用这种力量。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看