我有一个PyQt4
程序,在退出时会崩溃。我尝试使用
QtGui.QMainWindow
def closeEvent(self, event):
exit()
但它并没有阻止程序崩溃。我也尝试过使用
app.setActiveWindow(MainWindow)
exit(app.exec_())
但似乎没有解决问题。最后,我发现了一篇关于类似问题的SO帖子,它通过将sip.setdestroyonexit()
设置为False
来修复。
参考
当Python解释器退出PyQt4(默认情况下)时,调用C ++ 它拥有的所有包装实例的析构函数。这发生在一个 随机顺序,因此可能导致解释器崩溃。这个 可以通过调用sip.setdestroyonexit()来禁用行为 功能
PyQt5总是自动调用sip.setdestroyonexit()。
我设法将此设置设置为False
,以防止我的程序崩溃。
现在,我想知道将sip.setdestroyonexit()
设置为False
会有什么后果吗?如果禁用对C ++析构函数的调用会发生什么?