Python MVC只适用于wx-gui——如果不是,那又怎样



我一直在花时间重新组织项目gui。最初,我有一个文件,里面有"makeConfigWindow"one_answers"makeMainWindow"这样的函数,他们做了所有的事情来制作窗口。问题是,它的耦合非常紧密,而且非常具体,可重用的代码不适合类似的任务。我决定尝试只使用gui部分的MVC,所以我在一个接口文件中创建了一个模型类、视图类和控制器类。每个wx有一个实例。应用程序(除了视图,每个新帧都有一个新的应用程序)。

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

MVC框架似乎已经实现了这一点——配置是模型,wxPython本身是视图,一个又一个巨大的命令脚本是控制器。对的

我的问题是:如果不是这样,那么我应该如何构建我的gui?我最大的问题是,gui最终保存了所有东西,对象,引用,所有东西,因为Mainloop是最后唯一运行的东西,减去了一些执行系统检查之类的线程,然后它们向gui抛出事件。

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

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

  • 解析csv文件
  • 启动线程
  • 运行数据库查询

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

  • http://wiki.wxpython.org/ModelViewController
  • http://www.blog.pythonlibrary.org/2011/11/10/wxpython-and-sqlalchemy-an-intro-to-mvc-and-crud/
  • http://www.blog.pythonlibrary.org/2011/11/30/improving-medialocker-wxpython-sqlalchemy-and-mvc/
  • http://pyvideo.org/video/288/pycon-2010--wxpython-ii--introduction-to-gui-prog

相关内容

最新更新