python pubsub 订阅多个主题

标签 python wxpython publish-subscribe subscription

这看起来有点笼统,但其实问题很简单。是否可以使用 pubsub 模块订阅主题的子集。

让我简要解释一下我想要完成的事情。在一个 wxpython 项目中,我想根据不同的事件更改状态栏中的文本。所以我想要一个函数(一个监听器)来订阅一组主题。在监听器中,我将有 if 语句和几个 elif 语句,其中将检查主题的名称。然后状态栏文本将相应更改。

是否可以这样做,或者这首先是个坏主意。我该如何应对这种情况。 提前致谢

最佳答案

首先这是个坏主意。您应该让 pubsub 为您完成工作。每个主题一位听众。这样做是免费的,它隔离了您的代码,使其更易于维护,职责分离。

也就是说,监听器可以监听基本主题:pub.subscribe('a.b', listener) 将获取主题 a.b、a.b.c、a.b.d、a.b.c.e 等的消息。如前所述在 pubsub 文档中,您可以使用默认值为 pub.AUTO_TOPIC 的关键字 arg 告诉 pusub 将主题对象作为消息的一部分提供。但是,如果您使用此策略并最终得到一长串 if/elif/else,那么这可能不是正确的方法。

也许如果您提供有关您想要的主题层次结构的更多详细信息,以及您想要的 if/else 类型,我可以提供更有用的反馈。

关于python pubsub 订阅多个主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22456531/

相关文章:

python - 如何操作名称与 PDB 命令冲突的变量?

python - 如何更改 settings.py 以从 SQLite3 数据库迁移到 mysql 数据库?

python - Pytorch-索引错误 : index out of range in self

javascript - 在搜索框中输入文本,然后选择使用 Selenium 和 Python 自动完成

python - 间隔重复功能?

python - 无法安装新的 wxpython

python - py2app 的窗口 (wxPython) 在启动时没有出现在前面

wamp - Ratchet WAMP $topic 错误 :Call to a member function broadcast() on a non-object

knockout.js - 总是在没有 ValueHasMutated 的情况下使用 Knockout.js 以相同的值触发 Observable 事件

c# - Rabbitmq 扇出交换 C#