我什至不知道怎么问这个问题。我想要类似于 wxPython 事件系统但又有点不同的东西。我会尽力解释。
当我的程序发生某种变化时(“树变化”,不管那是什么,)我想向我程序中的所有小部件发送一个信号,通知它们发生了“树变化” ,他们应该改变他们的显示作为回应。
我该怎么做?这听起来有点像 wxPython 事件,但实际上并非如此,因为据我所知,事件不会传播到所有小部件。
执行此操作的好方法是什么?
请您参考如下方法:
您可以编写自己的发布-订阅机制,可以这么简单:
def register(self, callback):
self.callbacks.append(callback)
def emit(self, eventName):
for callback in self.callbacks:
callback(eventName)
任何对监听事件感兴趣的人都可以使用中央注册表注册一个函数,然后您可以向感兴趣的各方发送一个事件,您可以通过必须注册特定事件、拥有多个注册商、取消注册、错误检查等来进一步改进它
或者你可以使用 wxPython 的 wx.lib.pubsub模块或其他 python 库,如 PyPubsub , PyDispatcher
