在ttk / python中更改Label小部件的填充颜色

时间:2012-01-18 13:00:02

标签: python tkinter styling ttk

我试图在python中使用ttk / tkinter显示图像。图像有一个白色边框,我想在更大的白色背景上显示这个图像 - 所以它周围有很多白色空间。

为此,我在标签中使用“padx”和“pady”,每个100px。不幸的是,填充区域是灰色的。

现在我尝试更改标签的前景色和背景色无济于事。填充区域保持灰色。然后我将标签放在Frame小部件中,并尝试更改Frame的前景/背景颜色。但不幸的是,Frame小部件不会侦听width =和height = arguments。此外,如果我改变前景色,SUNKEN边框会改变颜色 - 非常酷,但对我来说完全没用:/。

有人可以帮我这个吗?当前的非工作代码如下所示:

style = Style()

style.configure('Dlr.TFrame', background="blue", relief=SUNKEN)
frm = Frame(self, style="Dlr.TFrame") # does not work: ,height=500,width=500)
frm.grid(row=0, column=0, rowspan=8, columnspan=2, sticky=N+S+E+W)

style.configure("Dlr.TLabel", background="white")
style.configure("Dlr.TLabel.padding", background="white") # just guessed ...
self.IMG = Label(frm, style="Dlr.TLabel")
self.IMG.grid(row=0, column=0, padx=100, pady=100)

1 个答案:

答案 0 :(得分:3)

将图像放入画面然后设置画面颜色的技巧是正确的技巧。

宽度和高度不起作用,因为gridpack默认情况下导致包含小部件“缩小到适合”。这称为几何传播。您可以使用包含小部件上的grid_propagatepack_propagate方法启用或停用此功能。

例如,如果您拨打frm.grid_propagate(False),然后设置小部件和frm的高度,则会尊重宽度和高度。