2017-04-06 48 views
0

嘗試使用PyQt5打開2個窗口,我們遇到了一個殘酷的Python退出與分段錯誤消息。python退出使用PyQt5分段錯誤

最小再現錯誤是:

Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from PyQt5 import QtCore, QtGui, QtWidgets 
>>> def application(): 
...  import sys 
...  app = QtWidgets.QApplication(sys.argv) 
...  Dialog = QtWidgets.QDialog() 
...  Dialog.show() 
...  app.exec_() 
... 
>>> import sys 
>>> app = QtWidgets.QApplication(sys.argv) 
>>> MainWindow = QtWidgets.QMainWindow() 
>>> list = application() 
>>> MainWindow.show() 
Segmentation error (core dumped) 

我們懷疑的第一個窗口妨礙第二個窗口開放。 我們怎樣才能沒有問題地打開兩個窗口?

+0

爲什麼要創建兩個'QApplication'對象? –

回答

1

你說得對,這是因爲我創建了2個我有問題的QApplication對象。 此程序也適用於此代碼:

from PyQt5 import QtCore, QtGui, QtWidgets 

def application(): 
    import sys 
    Dialog = QtWidgets.QDialog() 
    Dialog.show() 
    app.exec_() 


if __name__ == "__main__": 
    import sys 
    app = QtWidgets.QApplication(sys.argv) 
    MainWindow = QtWidgets.QMainWindow() 
    list = application() 
    MainWindow.show() 
    sys.exit(app.exec_())