Windows上的PyQt4应用程序在退出时崩溃

Joa*_*ias 2 python crash pyqt4

我正在使用PyQt4编写桌面应用程序,突然间它在退出时开始崩溃.

我查看了我的所有代码,以确保我没有做任何有趣的事情让它崩溃,我不认为代码有任何问题.

我之前看到过一些关于此问题的抱怨,但它与以前的版本有关,人们建议将PyQt4升级到最新版本,所以我做了,但这对崩溃问题没有帮助.

所以我问,有没有什么可以导致PyQt4的这种行为,我是否需要在终止程序上做一些清理Qt或我遗漏的任何其他事情?

小智 7

我有一个简单的hello world应用程序(QDialog有20个标签)也有同样的问题.奇怪的是,10个标签问题就消失了.

我通过强制退出解决如下:

def closeEvent(self, event):
    exit()
Run Code Online (Sandbox Code Playgroud)

这种情况发生在Windows上,在VirtualBox上使用PyQt v4.10.3 for Python v2.7(x32).


小智 5

调试器只会告诉我们我们已经知道的内容:应用程序在退出时崩溃.

您可能需要设置一个活动窗口,当关闭时,将导致确定性垃圾收集和干净的应用程序退出.有更多正确的方法可以做到这一点,但简单;下面的示例应该需要最少的代码更改,并且基于我编写的对话应用程序并且工作正常.

#The application
app = QtGui.QApplication(sys.argv)

#The main window
MainWindow = QtGui.QMainWindow()
app.setActiveWindow(MainWindow) #<---- This is what's probably missing

#the ui
ui = Ui_MainWindow()
ui.setupUi(MainWindow)

#start the application's exec loop, return the exit code to the OS
exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)