更改ttk / python中Label小部件的填充颜色
我正在尝试在Python的ttk/tkinter中显示一张图片。这张图片有一个白色的边框,我想把它放在一个更大的白色背景上,这样周围就会有很多白色的空白。
为此,我在标签中使用了“padx”和“pady”,每个设置为100像素。不幸的是,填充区域是灰色的。
我尝试改变标签的前景色和背景色,但没有效果,填充区域还是灰色的。然后我把标签放进一个Frame小部件中,试着改变Frame的前景色和背景色。但遗憾的是,Frame小部件并不接受宽度和高度的参数。而且如果我改变前景色,凹陷的边框颜色会改变,这看起来很酷,但对我来说完全没用 :/。
有没有人能帮我解决这个问题?目前的代码是这样的:
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 个回答
3
你把图片放在框架里,然后设置框架的颜色,这个方法是对的。
宽度和高度不生效是因为默认情况下,grid
和 pack
会让包含的控件自动调整大小,适应里面的内容。这种现象叫做几何传播。你可以通过使用 grid_propagate 或 pack_propagate 方法来开启或关闭这个功能。
举个例子,如果你调用 frm.grid_propagate(False)
,然后设置 frm
的宽度和高度,那么这些设置就会生效。