我已经创建了一个固定大小的框架,现在我想在它上面添加一些标签和其他小部件。但我观察到,一旦我在这个框架上添加了新的小部件,它的属性就不会生效,即大小和默认背景颜色集不会生效。
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行,那么我可以看到一个固定大小的蓝色背景帧。我的要求是,我想在这个框架上添加一些具有这种颜色的其他小部件。
发布于 2012-07-10 21:18:10
你对宽度和高度的不尊重是正确的,但对背景颜色不是正确的。背景颜色不受影响,但您看不到背景,因为背景正好适合标签周围。如果你在包装时给标签加上填充,你就会看到背景。
至于宽度和高度。这是Tkinter最大的特性之一。默认情况下,容器小部件会展开或折叠到足以容纳其内容的大小。因此,当您调用pack时,它会导致框架收缩。此功能称为几何传播。
对于绝大多数应用程序,这是您想要的行为。在极少数情况下,如果您想显式设置容器的大小,可以关闭此功能。要关闭它,请在容器上调用pack_propagate或grid_propagate (取决于您在该容器上使用的是grid还是pack ),并将其值设为False。
以您的代码为例,您将执行以下操作:
page1.pack_propagate(False)我的建议是不要这样做,而是学习如何使用几何传播。当用户调整窗口大小时,它将使您的GUI表现得更好,并且您不需要花费时间为窗口计算合适的大小。让Tkinter为你做这件事。
https://stackoverflow.com/questions/11413459
复制相似问题