我试图在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)
答案 0 :(得分:3)
将图像放入画面然后设置画面颜色的技巧是正确的技巧。
宽度和高度不起作用,因为grid
和pack
默认情况下导致包含小部件“缩小到适合”。这称为几何传播。您可以使用包含小部件上的grid_propagate或pack_propagate方法启用或停用此功能。
例如,如果您拨打frm.grid_propagate(False)
,然后设置小部件和frm
的高度,则会尊重宽度和高度。