|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 jsc_wu 于 2020-4-7 09:11 编辑
各位大神,
本人基于pyqt5设计了一个界面,还自定义了一个类VideoPorcessor,在类里面定义了析构函数__del__(self),然后在界面初始化函数里面用类VideoPorcessor定义了一个对象。程序正常运行后,当关闭界面退出程序时,报类对象已经deleted的错误。如下图所示:
析构函数:
def __del__(self):
print("%s, line=%d, del object" % (__name__, sys._getframe().f_lineno))
self.wait()
报错:
Exception ignored in: <function VideoPorcessor.__del__ at 0x0000000014531510>
Traceback (most recent call last):
File "E:\gititt-dap\itt-dap\vp-2.0\Video_process.py", line 46, in __del__
RuntimeError: wrapped C/C++ object of type VideoPorcessor has been deleted
我程序里面没有手动去调用析构函数,都是Python自己默认调用的,为什么会报这样的错误???
谢谢!
之前没有描述清楚,下面我再描述一下:
类VideoPorcessor定义如下:
class VideoPorcessor(QThread):
def __init__(self):
super(VideoPorcessor, self).__init__()
.....
def run(self):
try:
self.handle = ctypes.windll.kernel32.OpenThread( # @UndefinedVariable
win32con.PROCESS_ALL_ACCESS, False, int(QThread.currentThreadId()))
except Exception as e:
logger_processThread.error('get thread handle failed', e)
如上所述,定义了一个继承QThread的类,所以在析构函数里面才会有self.wait()。 |
|