Как создать единый дизайн виджетов в Python Tkinter? - PullRequest
0 голосов
/ 27 февраля 2019

Как видите, шрифты (имя, размер, стиль и т. Д.) Повторяются в каждом Checkbutton.Как я могу создать для них единый дизайн, не повторяя один и тот же код в каждом Checkbutton?Спасибо

main.iconify()
    global motor_wire
    motor_wire = Toplevel(main)


motorframe = LabelFrame(motor_wire, text="SIZE OF WIRE", font = ('Garamond', '25', 'bold', 'underline'), padx = 270, pady = 167, bd = 8)
motorframe.place(x = 30, y = 5)
Label(motorframe).pack()

thirteen = Checkbutton(motor_wire, text = '#13',font=("Calibri", '30', 'bold'), relief = 'groove' ,
                       bd = 5,padx = 0, pady = 5).place(x = 52, y = 50)
fourteen = Checkbutton(motor_wire, text = '#14',font=("Calibri", '30', 'bold'),relief = 'groove' ,
                       bd = 5,padx = 0, pady = 5).place(x = 189, y = 50)
fifteen = Checkbutton(motor_wire, text = '#15',font=("Calibri", '30','bold'),relief = 'groove' ,
                        bd = 5, padx = 0, pady = 5).place(x = 326, y = 50)

1 Ответ

0 голосов
/ 27 февраля 2019

Просто создайте словарь повторяющихся атрибутов:

d = dict(font=("Calibri", '30', 'bold'), relief='groove', bd=5, padx=0, pady=5)

Затем распакуйте его в конструктор:

thirteen = Checkbutton(motor_wire, text='#13', **d)

Не забудьте не связывать метод размещения, иначе вы не будетеиметь возможность вернуться к виджету позже:

thirteen.place(x=52, y=50)

Также рассмотрите возможность использования списка для этих флажков, чтобы вы могли создавать thirteen, fourteen и т. д. (предположительно из one или zero тоже) в цикле:

buttons = []
for i in range(15):
    buttons.append(Checkbutton(motor_wire, text=f'#{i}', **d))
# manual placement with .place() afterward, or maybe check out .grid()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...