【问题标题】:Change padding color of Label widget in ttk / python在 ttk / python 中更改标签小部件的填充颜色
【发布时间】:2012-01-18 13:00:01
【问题描述】:

我正在尝试在 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)

【问题讨论】:

    标签: python tkinter styling ttk


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的回复。我的结果好坏参半——或者说好消息和坏消息。好消息是我使用grid_propagate(false) 使框架增长到固定大小。坏消息是背景仍然是灰色的,并且现在图像位于框架的左上角。新代码:style.configure('Dlr.TFrame', relief=RAISED, bg="white") # bg does not work frm = Frame(self, style="Dlr.TFrame", width=500, height=500) frm.grid_propagate(False) frm.grid(row=0, column=0, rowspan=10, columnspan=2) # no changes on image/label, just removed the padx/y
    • 您必须使用完整的关键字“background”,而不仅仅是上面发布的“bg”。
    猜你喜欢
    • 2013-04-20
    • 2023-02-23
    • 1970-01-01
    • 2019-04-07
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    相关资源
    最近更新 更多