Python MVC 仅适用于 wx gui——如果不是,那又如何?

Python MVC just for wx gui -- if not it, then what?

我一直在花时间重组项目 gui。最初,我有一个包含 "makeConfigWindow" 和 "makeMainWindow" 等函数的文件,他们竭尽全力制作 windows。问题在于它的耦合度非常高,而且非常具体,可重用的代码无处可用于类似的任务。我决定尝试仅使用 gui 部分的 MVC,因此我在一个界面文件中制作了模型 class、视图 class 和控制器 class。每个 wx.App 每个实例一个(视图除外,每个新帧都是一个新实例)。

我现在 运行 遇到的问题是我似乎在重新发明轮子。我的模型只是从配置文件中获取信息,并在请求时将其吐出,但通过直接引用配置文件,此功能已经存在。该视图是 wx.Frame 的子 class,最终有一堆函数,例如控制器调用的 "changeBgColor(panel, color)"——问题是控制器可以简单地调用这些函数来自 wx 而不是 View 中间人的功能。现在,控制器最终看起来与我原来的 "makeMainWindow" 功能一样具体。

看起来 MVC 框架已经存在了——配置是模型,wxPython 本身是视图,巨大的命令后命令脚本是控制器。正确吗?

我的问题是:如果不是这样,那么我应该如何构建我的图形用户界面?我最大的问题是 gui 最​​终包含了所有东西,对象,引用,所有东西,因为 Mainloop 是最后唯一的东西 运行,减去一些执行系统检查等的线程,然后它们将事件抛给gui.

大多数时候,我使用 wxPython 代码作为我的视图。如果事件处理程序需要加载配置或访问数据库,则它会使用控制器来执行此操作。我的模型通常与数据库相关(或用于 ObjectListView)。 wxPython 代码应该只做与 wxPython 相关的事情。

这意味着如果你有任何东西可以在 wx 之外做任何事情,那么它可能会进入模型或控制器。控制器示例:

  • 解析 csv 文件
  • 开始一个线程
  • 运行 数据库查询

以下文章可能对您有所帮助: