Изменение поведения по умолчанию для виджетов 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 ответ

Решение

Я ответил на свой вопрос. Как обычно, нужно выяснить, что искать.

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 ищет путь к опции. Не сам вариант. Там, где я установил шрифт, я поместил перед ним шаблон (посмотрел прямо на него, но никогда не видел). Эффективно меняя шрифт для всего.

Там, где я установил "передний план", я не создал путь.

Правильный код:

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")

изменит значения по умолчанию для ярлыков (глобально) (все еще не совсем понимаю путь до * ярлыка. Когда я это выясню, я исправлю этот ответ)

Другие вопросы по тегам