更改tkinter小部件的默认行为

时间:2014-05-22 22:18:05

标签: python tkinter

我想更改各种小部件的默认行为。 特别是我想将标签的默认浮雕设置为SUNKEN,默认背景为灰色,默认前景为蓝色等等。

我尝试过add_option,但唯一需要的是“* font”,“arial 32”。

我希望这样做,因为我有一个屏幕上有许多标签,代码变得凌乱,相同的浮雕= SUNKEN一行一行。

由于

    self.PartInputFrame=Frame(self.parent,width=self.parent.winfo_screenwidth(),height=self.parent.winfo_screenheight())
    self.PartInputFrame.pack_propagate(0)
    self.PartInputFrame.config(background='blue')

    self.PartInputLabel=Label(self.PartInputFrame,anchor=CENTER)
    self.PartInputLabel.config(fg='white',bg='blue')
    self.PartInputLabel.config(text='Part Program Input Information')
    self.PartInputLabel.place(rely=.1,relx=.5,anchor=CENTER)
    self.PartInputLabel.config(font=("arial",32))


    self.PartInputFrame.option_add("*Font","arial 32")
    self.PartInputFrame.option_add("foreground","white")
    self.PartInputFrame.option_add("background","blue")
    self.PartInputFrame.option_add("relief","SUNKEN")



    Label(self.PartInputFrame,text="Polyline").place(rely=.3,relx=.1)
    Label(self.PartInputFrame,text='"X" Origin Set').place(rely=.35,relx=.1)
    Label(self.PartInputFrame,text='Pattern(s) Long').place(rely=.4,relx=.1)
    Label(self.PartInputFrame,text='Pattern(s) Wide').place(rely=.45,relx=.1)
    Label(self.PartInputFrame,text='Repeat Length').place(rely=.5,relx=.1)
    Label(self.PartInputFrame,text='Repeat Width').place(rely=.55,relx=.1)
    Label(self.PartInputFrame,text='Mirror (Y or N)').place(rely=.6,relx=.1)
    Label(self.PartInputFrame,text='Pattern Type').place(rely=.65,relx=.1)


    Label(self.PartInputFrame,text='Part Program').place(rely=.3,relx=.5)
    Label(self.PartInputFrame,text='Part Drawing Number').place(rely=.35,relx=.5)
    Label(self.PartInputFrame,text='Plates Produced').place(rely=.40,relx=.5)
    Label(self.PartInputFrame,text='Plates Remaining').place(rely=.45,relx=.5)
    Label(self.PartInputFrame,text='Left Setup').place(rely=.50,relx=.5)
    Label(self.PartInputFrame,text='Right Setup').place(rely=.55,relx=.5)
    Label(self.PartInputFrame,text='Plate Lenght').place(rely=.60,relx=.5)
    Label(self.PartInputFrame,text='Plate Width').place(rely=.65,relx=.5)

1 个答案:

答案 0 :(得分:1)

我已经回答了我自己的问题。像往常一样,需要弄清楚要搜索的内容。

self.PartInputFrame.option_add("*Font","arial 32")
self.PartInputFrame.option_add("foreground","white")
self.PartInputFrame.option_add("background","blue")
self.PartInputFrame.option_add("relief","SUNKEN")

option_add正在寻找该选项的路径。不是选项本身。在我设置Font的地方,我在它前面放了一个通配符(看着它但从未看过它)。为一切有效地改变字体。

我设置'前景'时我没有创建路径。

正确的代码:

self.PartInputFrame.option_add("*Font","arial 32")
self.PartInputFrame.option_add("*foreground","white")
self.PartInputFrame.option_add("*background","blue")
self.PartInputFrame.option_add("*relief","SUNKEN")

这将全局改变前景,背景等。

(更多)正确的代码:

self.PartInputFrame.option_add("*Label.Font","arial 32")
self.PartInputFrame.option_add("*Label.foreground","white")
self.PartInputFrame.option_add("*Label.background","blue")
self.PartInputFrame.option_add("*Label.relief","SUNKEN")

将更改标签的默认值(全局) (仍然不太了解* Label之前的路径。当我想出来时我会修改这个答案)