2017-04-06 67 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_())