ООП в Python. Как организовать класс с родительским окном и класс с дочерним окном? Собственно есть такой код накиданый мной. Изначально передо мной была задача: Создать приложение с использованием tkinter и ООП подхода к построению GUI, чтоб было главное окно и дочернее, которое вызывается по клику на кнопку. Я новичёк, но погуглив и почитав литературу моё решение вылилось в такой вот код. Есть основной класс Main который наследуется от Frame и является родительским окном, также есть класс Child который наследуется от Toplevel в свою очередь является дочернем окном. Вопрос состоит в том, на сколько корректно я реализовал данную задачу с профессиональной точки зрения. Хочу мнения опытных Питонистов, данная задача всплывает у многих в той или иной реализации. Есть желания создать базовый шаблон чтоб дальше продолжить реализацию собственного приложения.import tkinter as tk
class Main(tk.Frame): def __init__(self, root): super().__init__(root) self.init_main()
Ваше решение вполне корректно с точки зрения ООП и использования библиотеки Tkinter для создания GUI приложений на Python. В вашем коде основное окно (Main) является родительским, а дочернее окно (Child) вызывается при нажатии на кнопку.
Однако, чтобы улучшить структуру и сделать ее более модульной, можно внести некоторые улучшения.
Передача root в класс Child: В вашем коде при создании объекта Child вы передаете root напрямую, что может привести к проблемам связанным с глобальной переменной root. Лучше передавать root в качестве аргумента:
def open_dialog(self): Child(self.master)
Добавление self.master в класс Child: Также, вам нужно изменить метод __init__ в классе Child и обратиться к родительскому окну через self.master:
Эти улучшения помогут сделать ваш код более гибким и упростят его дальнейшее развитие. В остальном, ваше решение хорошее и соответствует задаче создания оконного приложения с использованием ООП и Tkinter.
Ваше решение вполне корректно с точки зрения ООП и использования библиотеки Tkinter для создания GUI приложений на Python. В вашем коде основное окно (Main) является родительским, а дочернее окно (Child) вызывается при нажатии на кнопку.
Однако, чтобы улучшить структуру и сделать ее более модульной, можно внести некоторые улучшения.
Передача root в класс Child:
def open_dialog(self):В вашем коде при создании объекта Child вы передаете root напрямую, что может привести к проблемам связанным с глобальной переменной root. Лучше передавать root в качестве аргумента:
Child(self.master)
Добавление self.master в класс Child:
def __init__(self, master):Также, вам нужно изменить метод __init__ в классе Child и обратиться к родительскому окну через self.master:
super().__init__(master)
self.title('Добавить доходы/расходы')
self.geometry('400x220+400+300')
self.resizable(False, False)
Эти улучшения помогут сделать ваш код более гибким и упростят его дальнейшее развитие. В остальном, ваше решение хорошее и соответствует задаче создания оконного приложения с использованием ООП и Tkinter.