首页 > 代码库 > PyDeadObjectError: The C++ part of the CMainFrame object has been deleted, attribute access no longer allowed

PyDeadObjectError: The C++ part of the CMainFrame object has been deleted, attribute access no longer allowed

  在wxpython做的GUI主线程结束时,由于一个正在运行的子线程无法正常地结束而RAISE出了如标题所示的异常。原因是wxpython的frame已经析构而不可访问其属性。

  KILL一个子线程,方法有二:1. threading.setDaemon(True)为后台线程,当主线程结束时随之退出;2. 在线程函数中添加结束的标志变量,退出时使用此变量而结束此线程;但在这里两个方法都不能使子线程正常退出,从而不能解决这个异常的抛出问题,原因暂时还没弄清。

  看了所抛出异常的内容,于是想到在except到的异常中,利用python的callable()函数来检测框架的引用是否可以访问,if not callable(self): return