2011-03-31 67 views
2

我正在用PyQt4寫一個桌面應用程序,並突然它在出口時開始崩潰。在Windows上的PyQt4應用程序正在崩潰退出

我回顧了我的所有代碼,以確保我沒有做任何有趣的事情讓它崩潰,我不認爲代碼有任何問題。

我之前看到過一些關於此問題的抱怨,但它與以前的版本有關,人們建議將PyQt4升級到最新版本,所以我這樣做了,但這並沒有幫助解決崩潰問題。

所以我問,有沒有什麼可以導致這種行爲與PyQt4,我需要做一些終止程序來清理Qt或我缺少的其他東西?

+1

沒有人知道你的程序中有什麼可以回答這個問題。 – 2011-03-31 22:06:38

+1

至少,您應該使用一些可能導致崩潰的代碼。沒有人能夠毫無頭緒地回答你的問題。 – winterTTr 2011-04-01 02:13:57

+0

我的代碼沒有什麼特別之處。如果您只在其中的每個選項卡上加載帶有筆記本選項卡和表格視圖的.ui程序並運行該程序,該應用程序可能會在退出時崩潰。在Qt清理中釋放內存時看起來像是一些問題。 – 2011-04-04 13:50:16

回答

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_()) 
+0

這完美解決了我在使用PyQt 4.11.4時遇到的問題,非常感謝! – 2016-12-13 13:47:15

7

我有一個簡單的Hello World應用程序(帶有20個標籤的QDialog)的相同問題。奇怪的是,問題消失了10個標籤。

我解決了通過強制退出如下:

def closeEvent(self, event): 
    exit() 

這發生在Windows與PyQt的v4.10.3的VirtualBox上的Python V2.7(X32)。

+0

謝謝,這對我有用!我正在使用PyQt 4.11 x86,並且遇到同樣的問題,QDialog在關閉窗口時開始崩潰。 – 2014-06-02 18:25:44

+0

這適用於PyQt 4.10.4 Anaconda x86 – addoil 2015-08-18 01:19:11