这看起来有点笼统,但其实问题很简单。是否可以使用 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/