首页 > 解决方案 > wxpython pubsub 在从 dill 加载后失败

问题描述

我使用 wxpython (phoenix) 作为前端,使用 wx.lib.pubsub 来管理程序中的模块间(和包间)消息传递。我目前使用模块 dill 来保存和加载程序状态。

我只使用 sendMessage 和 subscribe 方法,这里没有花哨的欺骗。

如果我留在同一个会话中,也就是说,我构建模型并修改它而不保存和重新加载模型,一切正常。但是,当重新启动 GUI 并从保存的文件开始会话时,以前正常工作的部分消息传递失败:消息已发送,但接收者没有收到它们。当直接调用本应在接收方调用的方法时,无论会话如何,一切都很好。

由于问题的复杂性,我无法真正提供示例,但希望能做出任何澄清或分享类似经验的努力。

标签: python-3.xdillwxpython

解决方案


回答我自己的问题:在尝试重现玩具问题中的问题后,随后进行了冗长的调试,但发现问题的根源是设置某些属性的方式,即使用 property.setters。这些已被 set_ 方法替换,问题已解决。

我知道这个问题,而且答案也远低于预期的 SO 标准,请随意投反对票。


推荐阅读