【问题标题】:Correct use of multiple windows for MVC pattern with Tkinter使用 Tkinter 正确使用 MVC 模式的多个窗口
【发布时间】:2021-02-01 01:34:20
【问题描述】:

我正在尝试制作一个带有 GUI 的 Python 程序,其中将在画布上显示各种动画。我决定使用 MVC 模式和 Tkinter。启动我的程序时,应该会弹出一个窗口,您必须在显示 GUI 之前选择画布的尺寸。

但是,我找不到有效的方法来做到这一点。我尝试使用 Dialog、Toplevel、Frame 等,但由于我使用的是 MVC 模式,如果在设置窗口之后打开此 GUI 窗口,因为它尚未实例化,我无法找到如何将我的控制器功能与我的 GUI 链接.

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()

【问题讨论】:

  • 您可以在数据结构(字典、命名元组或自定义类)中保留弹出窗口中 GUI 集的规范,以便在实例化 GUI 时使用。您可以让这个数据结构保存默认值(可能从文件中读取),以允许用户在需要时跳过设置步骤。

标签: python user-interface tkinter canvas model-view-controller


【解决方案1】:

我发现解决此问题的方法是创建一个窗口Tk(),然后将不同的框架解包和打包。我想这不是最好的方法,但它确实有效!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    • 1970-01-01
    相关资源
    最近更新 更多