2012-01-18 70 views
4

我试图在python中用ttk/tkinter显示图像。图像有一个白色边框,我想在较大的白色背景上显示此图像 - 因此它周围有很多空白区域。在ttk/python中更改标签小部件的填充颜色

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

现在我试着改变标签的前景和背景颜色无济于事。填充区域保持灰色。然后我将标签放在一个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) 

回答

3

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

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

例如,如果您拨打frm.grid_propagate(False),然后设置窗口部件和高度为frm,宽度和高度将被遵守。

+0

感谢您的回复。我对此有不同的结果 - 或者好消息和坏消息。好消息是我使用'grid_propagate(false)'将帧增长到了一个固定的大小。坏消息是背景仍然是灰色的,现在图像位于画面的左上角。 新代码: 'style.configure('Dlr.TFrame',relief = RAISED,bg =“white”)#bg不起作用 frm = Frame(self,style =“Dlr.TFrame”,width = 500, height = 500) frm.grid_propagate(False) frm.grid(row = 0,column = 0,rowspan = 10,columnspan = 2) #image/label没有变化,只是删除padx/y' – Axel 2012-01-18 19:06:23

+0

你必须使用完整的关键字“背景”,而不仅仅是“bg”。 – timeyyy 2015-04-25 10:46:01