0

我有一个应用程序引擎,其中使用 PyPubSub 完成程序内通信。

Planned 是一个有点响应的 GUI,例如基于模型状态启用/禁用小部件。这将使用 wxPython 实现。

由于 wxPython 有一个在 GUI 上工作的自己的 pubsub 库(即 PyPubSub),问题是:如何维护 MVC 模型。

在保持 MVC 模式的同时混合两种消息传递系统是否可能(更重要的是:这是否有意义)?例如,让这两个消息传递系统分开,同时让 GUI 拥有引擎主题的订阅者?

或者我应该只在 GUI 中使用模型(即应用程序引擎)的 pubsub,而不使用 wxPython 内置的?

对这个相当概念性的问题的任何帮助表示赞赏。

4

1 回答 1

2

总结(pypubsub 的作者):如果你从 pypubsub 而不是 wx.lib.pubsub 导入,一切都会正常工作,你不会有“两个消息传递系统”。

细节:

wx 包中没有实际使用 wx.lib.pubsub 的内容;后者仅出于遗留原因仍在 wx.lib 中(见下文),是否要在 wxPython 应用程序中使用发布-订阅完全是您的选择。

pypubsub/wx.lib.pubsub 的历史: wx.lib.pubsub 最初是为 wxPython 开发的模块,并包含在其源代码中。它作为一个名为 pypubsub 的独立库被移出(10 多年前!),因为 wxPython 中没有任何东西依赖它,反之亦然。为了向后兼容,wx.lib.pubsub 作为独立 pypubsub 的特定“版本”保持活动状态(例如,wxPython 3 使用 pypubsub 3.3)。但是最新的 wxPython (4.0.4) 已弃用其 wx.lib.pubsub:您应该直接从 pip install 或 github 安装独立的 pypubsub,并使用from pubsub import pub(而不是from wx.lib.pubsub import pub)。

如果可以,您应该使用 wxPython 4.0.4、Python 3.7 和 pypubsub 4.0.0(4.0.1 即将推出并支持仅关键字参数)。

于 2019-01-27T05:14:48.720 回答