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

时间:2011-03-31 21:53:46

标签: python crash pyqt4

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

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

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

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

2 个答案:

答案 0 :(得分:7)

我遇到了一个简单的hello world应用程序(带有20个标签的QDialog)的问题。奇怪的是,问题随着10个标签而消失。

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

def closeEvent(self, event):
    exit()

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

答案 1 :(得分: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_())