首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Tkinter中为frame添加标签会忽略frame的属性

在Tkinter中为frame添加标签会忽略frame的属性
EN

Stack Overflow用户
提问于 2012-07-10 20:36:02
回答 1查看 7.8K关注 0票数 4

我已经创建了一个固定大小的框架,现在我想在它上面添加一些标签和其他小部件。但我观察到,一旦我在这个框架上添加了新的小部件,它的属性就不会生效,即大小和默认背景颜色集不会生效。

代码语言:javascript
复制
from Tkinter import *
tk = Tk()
page1 = Frame(tk, bg="blue", width=100, height=200)
l1 = Label(page1, text='This is label 1')
page1.pack()
l1.pack()
tk.mainloop()

因此,在上面的例子中,如果我注释掉第4行和第6行,那么我可以看到一个固定大小的蓝色背景帧。我的要求是,我想在这个框架上添加一些具有这种颜色的其他小部件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-10 21:18:10

你对宽度和高度的不尊重是正确的,但对背景颜色不是正确的。背景颜色不受影响,但您看不到背景,因为背景正好适合标签周围。如果你在包装时给标签加上填充,你就会看到背景。

至于宽度和高度。这是Tkinter最大的特性之一。默认情况下,容器小部件会展开或折叠到足以容纳其内容的大小。因此,当您调用pack时,它会导致框架收缩。此功能称为几何传播。

对于绝大多数应用程序,这是您想要的行为。在极少数情况下,如果您想显式设置容器的大小,可以关闭此功能。要关闭它,请在容器上调用pack_propagategrid_propagate (取决于您在该容器上使用的是grid还是pack ),并将其值设为False

以您的代码为例,您将执行以下操作:

代码语言:javascript
复制
page1.pack_propagate(False)

我的建议是不要这样做,而是学习如何使用几何传播。当用户调整窗口大小时,它将使您的GUI表现得更好,并且您不需要花费时间为窗口计算合适的大小。让Tkinter为你做这件事。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11413459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档