Я пишу программу на Python с графическим интерфейсом, созданным с помощью модуля Tkinter. Я использую класс для определения графического интерфейса, потому что он облегчает передачу команд кнопкам и немного облегчает понимание всего этого.
Фактическая инициализация моего графического интерфейса занимает около 150 строк кода. Чтобы это было легче понять, я написал функцию __init__
так:
def __init__(self, root):
self.root = root
self._init_menu()
self._init_connectbar()
self._init_usertree()
self._init_remotetree()
self._init_bottom()
, где _init_menu()
, _init_connectbar()
и т. Д. Выполняют всю работу по инициализации. Это облегчает отслеживание моего кода и предотвращает слишком большое увеличение __init__
.
Однако это создает проблемы с областью действия. Поскольку виджет Entry, который я определил в _init_connectbar()
, находится в области действия функции и не является атрибутом класса, я не могу ссылаться на него в других методах класса.
Я могу устранить эти проблемы, выполнив большую часть инициализации в __init__
, но я потеряю абстракцию, полученную моим первым методом.
Должен ли я развернуть __init__
или найти другой способ перевести виджеты в область видимости класса?