pyqt 编写的应用程序退出后崩溃
崩溃描述如下:
问题签名: 问题事件名称: APPCRASH 应用程序名: python.exe 应用程序版本: 0.0.0.0 应用程序时间戳: 4e04e3f6 故障模块名称: QtCore4.dll 故障模块版本: 4.8.5.0 故障模块时间戳: 52133723 异常代码: c0000005 异常偏移: 00000000001274b0 OS 版本: 6.1.7600.2.0.0.256.1 区域设置 ID: 2052 其他信息 1: 55c7 其他信息 2: 55c7eecfaf2708505ee26e0b1c34c0c8 其他信息 3: d34d 其他信息 4: d34dfd3bc71fd9578fdafbfcbcf49db9 联机阅读隐私声明: http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0804 如果无法获取联机隐私声明,请脱机阅读我们的隐私声明: C:Windowssystem32zh-CNerofflps.txt
期待各位指点!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
imoprt sip
sip.setdestroyonexit(False)
Reference
When the Python interpreter exits PyQt4 (by default) calls the C++ destructor of all wrapped instances that it owns. This happens in a random order and can therefore cause the interpreter to crash. This behavior can be disabled by calling the sip.setdestroyonexit() function.
PyQt5 always calls sip.setdestroyonexit() automatically.
@Xsank , 哥们, 你这个问题解决了吗?我现在也遇到这个问题了.出错信息都跟你一样.
这个方法其实试过的,但是无效。由于不是过程式的代码,不太好找啊
@Xsank 嗯,的确麻烦。我的问题通过这个方法搞定了。
可能是QT的事件循环退出后,强制释放调了Python代码所需的资源。在qApp.quit()后,再执行一下sys.exit(0)。
由简单,到复杂。多运行几次。
第1次,进去就退出。看是否崩溃。
第2次,进去后,选一项模块运行。运行完后,马上退出。看是否崩溃。
依次类推,遍历所有模块。
如上述所说,没有在python代码中报错,只是退出时崩溃,debug无效
抓dump
debug