答案 0 :(得分:1)
您应该能够绑定到EVT_WINDOW_DESTROY并在处理程序中执行unsub。
例如:
class MyPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, wx.NewId())
pub.subscribe(self.__handler, 'event')
def __destroy(_):
pub.unsubscribe(self.__handler, 'event')
self.Bind(wx.EVT_WINDOW_DESTROY, __destroy)
如果上面不起作用,可以通过在尝试访问ExtendedWxPanel的代码中添加以下内容来防止PyDeadObjectError异常:
如果instanceOfExctendedWxPanel: 然后访问它或它的方法。