Правильное использование нескольких окон для шаблона MVC с помощью Tkinter

#python #user-interface #tkinter #canvas #model-view-controller

#python #пользовательский интерфейс #tkinter #холст #модель-представление-контроллер

Вопрос:

Я пытаюсь создать программу на Python с графическим интерфейсом, в которой на холсте будут отображаться различные анимации. Я решил использовать шаблон MVC и Tkinter. При запуске моей программы должно появиться окно, и вам нужно выбрать размеры холста перед отображением графического интерфейса.

введите описание изображения здесь

Однако я не могу найти эффективный способ сделать это. Я пробовал использовать Dialog, Toplevel, Frame и т. Д. Но Поскольку я использую шаблон MVC, я не могу найти, как связать функции моего контроллера с моим графическим интерфейсом, если это окно графического интерфейса открыто после окна настройки, поскольку оно еще не создано.

введите описание изображения здесь

 class View(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)

        self.setting_window = SettingWindow(self)
        self.setting_window.ok_button.configure(command=self.open_editor)
        self.withdraw()
        self.mainloop()

    def open_editor(self):
        map_dim = self.setting_window.getValues()
        self.editor_window = Window(self, map_dim)
        self.setting_window.destroy()
  

Комментарии:

1. Вы можете сохранить спецификации набора GUI из всплывающего окна в структуре данных (dict, именованный кортеж или пользовательский класс), которые будут использоваться при создании экземпляра GUI. Возможно, вы могли бы использовать эту структуру данных для хранения значений по умолчанию (возможно, для чтения из файла), чтобы позволить пользователю пропустить шаг настройки при желании.

Ответ №1:

Способ, который я нашел для решения этой проблемы, заключался в создании окна Tk() и просто распаковке и упаковке разных фреймов. Я думаю, это не лучший способ сделать это, но это сработало!