Приложение PyQt4 в Windows падает при выходе - PullRequest
2 голосов
/ 01 апреля 2011

Я пишу настольное приложение на PyQt4, и оно неожиданно начало падать при выходе.

Я просмотрел весь свой код, чтобы убедиться, что я не делал ничего смешного, чтобы он завис иЯ не думаю, что с кодом что-то не так.

Я уже видел некоторые жалобы по этому поводу, но это было связано с предыдущей версией, и люди посоветовали обновить PyQt4 до последней версии, и я это сделал, ноэто не помогло с проблемой сбоя.

Поэтому я спрашиваю, есть ли что-нибудь, что может привести к такому поведению с PyQt4, нужно ли мне выполнять какие-то процедуры завершения для очистки Qt или что-то ещеотсутствует

Ответы [ 2 ]

7 голосов
/ 09 января 2014

У меня была такая же проблема с простым приложением hello world (QDialog с 20 ярлыками). Странно проблема исчезает с 10 ярлыками.

Я решил, вызвав выход следующим образом:

def closeEvent(self, event):
    exit()

Это происходит в Windows с PyQt v4.10.3 для Python v2.7 (x32) в VirtualBox.

5 голосов
/ 10 июля 2011

Отладчик скажет нам только то, что мы уже знаем: приложение аварийно завершает работу при выходе.

Возможно, вам нужно установить активное окно, которое при закрытии приведет к детерминированной сборке мусора и чистому завершению работы приложения. Есть более правильные способы сделать это, но простой пример, приведенный ниже, должен требовать минимальных изменений кода и основан на диалоговом приложении, которое я написал, и прекрасно работает.

#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_())
...