Это мой первый проект tkinter / gui. Я установил шаблон mvc и имею класс представления для каждого окна моего приложения.
Пример для главного окна:
class ViewMain(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master, height = 300, width = 500)
self.pack(fill='both', expand=True)
self.BUTTON_SIZE = {'relheight' : 0.3, 'relwidth' : 0.35}
self._set_widgets()
self._set_layout()
def _set_widgets(self):
self.button = tk.Button(self, text = 'Text')
def _set_layout(self):
self.button.place(relx = 0.1, rely = 0.15, **self.BUTTON_SIZE)
В настоящее время у меня есть 6 классов представлений, и я хочу изменить рельеф кнопок на паз. Поскольку у меня более 30 кнопок, я ищу способ не писать все время следующее:
self.button = tk.Button(self, text = 'Text', relief = 'groove')
Как видите, один недостаток в моей мысли заключается в том, что я уже использую повторяющийся подход к настройке размера кнопок. Но давайте просто проигнорируем это.
Поскольку я новичок во всем этом, я вижу три способа сделать это:
- Добавляйте «Relief = 'groove'» как вариант каждый раз Я создаю кнопку
- Используйте ttk.Button и настраиваю стиль. Но мне пришлось бы делать это для каждого класса представления и добавлять стиль каждый раз, когда я создаю кнопку.
- Напишите оболочку для tk.Button и используйте ее вместо
Последний вариант привел меня к следующему:
class CustomButton(tk.Button):
def __init__(self, master, text):
super().__init__(master, text = text, relief = 'groove')
Что работает, но я не могу перестать думать, есть ли лучший способ подойти к этому?