代码之家  ›  专栏  ›  技术社区  ›  jake77

PyPubSub和wxPython内置pubsub模块的混合使用

  •  0
  • jake77  · 技术社区  · 7 年前

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

    Planned是一种响应性较强的GUI,例如根据模型状态启用/禁用小部件。这将使用wxPython实现。

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

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

    在这个概念性的问题上,我们非常感谢您的帮助。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Oliver    7 年前

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

    细节:

    wx包中没有实际使用wx.lib.pubsub的内容;后者仍然存在于wx.lib中,只是出于遗留原因(请参见下文),您完全可以选择是否要在wxPython应用程序中使用publish-subscribe。

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

    如果可以的话,应该使用wxpython4.0.4、python3.7和pypubsub 4.0.0(4.0.1即将推出,并且只支持关键字参数)。