为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕后森 2019-12-05 15:52:59
这是给我麻烦的代码。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()如果我用标签注释掉行,则框架显示为正确的宽度。但是,添加标签似乎将框架缩小到标签的大小。有办法防止这种情况发生吗?
查看完整描述

2 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

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


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


f.pack_propagate(0)

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


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

查看完整回答
反对 回复 2019-12-05
?
ITMISS

TA贡献1871条经验 获得超8个赞

如果也可以self.pack_propagate(0)__init__()Frame通常使用的class Application(Frame):成语中那样,使用从- 派生的小部件类的方法来完成此操作。

查看完整回答
反对 回复 2019-12-05
  • 2 回答
  • 0 关注
  • 793 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信