我创建了一个固定大小的框架,现在我想在其上添加一些标签和其他小部件。但我观察到,一旦我在这个框架上添加新的小部件,它的属性就不受尊重,即大小和默认的背景颜色集不受尊重。
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,然后我可以看到一个固定大小的框架与蓝色背景颜色。我的要求是我想用这种颜色在这个框架上添加一些其他的小部件。
答案 0 :(得分:3)
您对未被尊重的宽度和高度是正确的,但与背景颜色无关。背景颜色不受影响,但您无法看到背景,因为背景恰好适合标签。如果在打包时向标签添加填充,您将看到背景。
关于宽度和高度......这是Tkinter的一大特色。默认情况下,容器窗口小部件会扩展或折叠,以便足以容纳其内容。因此,当您调用pack
时,会导致帧缩小。此功能称为几何传播。
对于浩大的大多数应用程序,这是您想要的行为。对于那些您想要明确设置容器大小的罕见情况,您可以关闭此功能。要关闭它,请调用容器上的pack_propagate
或grid_propagate
(取决于您是否在该容器上使用网格或包),并为其赋值False
。
以您的代码为例,您可以:
page1.pack_propagate(False)
我的建议是不这样做,而是学习如何使用几何体传播。当用户调整窗口大小时,它将使您的GUI表现更好,并且您不会花时间尝试计算窗口的正确大小。让Tkinter为您做到这一点。