从wx帧类调用应用程序方法

时间:2008-12-24 06:07:31

标签: python wxpython wxwidgets model-view-controller project-organization

我开始使用wxPython并且一直在努力完成每个教程和示例,我可以动手。然而,我遇到了一个小问题,它与wx.App和wx.Frame有关,它应该包含特定的方法。几乎我见过的每个例子都没有超出布局/大小调整和事件处理,没有真正解决wxPython项目的项目组织。

例如,我有一个获取文件夹列表的方法。大多数示例处理此问题的方法是将方法保持在框架类中。此方法有可能在应用程序的其他几个部分中使用,因此将它存储在应用程序类级别更有意义。

我应该如何组织和调用这些“通用”方法,这样我就不会弄乱我的帧类。

更新

为了澄清,“文件夹列表”只是一个例子,我的实际方法做了很多工作。我所说的是我的代码不是特定于帧的。如果我在应用程序类中有这个,那么在我的框架中调用它和事件方法的最佳方法是什么。

我正在寻找实际的项目组织技术,而不是编程基础知识。

4 个答案:

答案 0 :(得分:2)

正如Mark所说,你应该创建一个处理这类事情的新类。

使用类似wxWidgets之类的代码的理想布局是模型视图控制器,其中wxFrame类仅具有显示项所需的代码,并且所有逻辑和业务规则由与wxFrame交互的其他类处理。这样,您就可以更改逻辑和业务规则,而无需更改界面并更改(或交换)界面,而无需更改逻辑和业务规则。

答案 1 :(得分:2)

从wxWidgets / wxPython数据类型继承的类不应实现任何业务逻辑。 wxWidgets是一个GUI库,因此wxApp或wxFrame的任何子类都应该专注于GUI,即显示界面并响应用户操作。

执行某些有用的代码应该与wx分开,因为您可以稍后决定在某些Web或控制台应用程序中使用它,并且您不希望在这种情况下创建wxApp对象。您也可以稍后决定将一些计算移动到单独的“工作线程”,而您的GUI将是“主线程” - 响应,并在长时间计算期间正确重新绘制。

最后但并非最不重要的是 - 封装逻辑的类可能会在项目生命周期中增长。如果它们与你的GUI类混合,它们会变得更快,最后它们变得如此复杂,以至于你几乎无法调试它们......

当你没有将逻辑中的错误与GUI中的错误(刷新/布局/进度条等)混合在一起时,将它们分开会导致干净的代码。这种方法还有另一个不错的功能 - 能够在GUI人员和逻辑人员之间分离工作,这可以在没有持续冲突的情况下完成工作。

答案 2 :(得分:2)

从一开始我可能应该更加清楚,但我找到了我想要的东西:

http://wiki.wxpython.org/ModelViewController/

在wxpython wiki中,我找到了几个简单,具体的MVC项目示例。

答案 3 :(得分:0)

在适当的OOP设计中,这将是独立的或文件系统类的一部分 - 它不会是应用程序或框架的一部分。