4

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

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

现在我尝试更改标签的前景色和背景色无济于事。填充区域保持灰色。然后我将标签放在 Frame 小部件中,并尝试更改 Frame 的前景色/背景色。但不幸的是,Frame 小部件不听 width= 和 height= 参数。此外,如果我更改前景色,则 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)
4

1 回答 1

3

您将图像放入框架然后设置框架颜色的技术是正确的技术。

宽度和高度不起作用,因为默认情况下两者都会grid导致pack包含的小部件“缩小以适应”。这称为几何传播。您可以使用包含小部件的grid_propagatepack_propagate方法打开或关闭此功能。

例如,如果您调用frm.grid_propagate(False)然后设置小部件和高度frm,则宽度和高度将被尊重。

于 2012-01-18T18:23:54.150 回答