PyQT5 program returning error only during first compile run
以下示例在新的ipython控制台(spyder)中运行时返回"-1",但仅在第一次尝试时返回。 之后它似乎工作正常。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | from PyQt5 import QtWidgets, QtGui, QtCore from GUI import Ui_MainWindow # importing our generated file import sys import numpy as np class mywindow(QtWidgets.QMainWindow): def __init__(self): super(mywindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) app = QtCore.QCoreApplication.instance() if app is None: app = QtWidgets.QApplication(sys.argv) application = mywindow() application.show() sys.exit(app.exec()) |
错误如下:
>runfile('C:/Users/xxx.py', wdir='C:/Users/xx/Documents/3dPackaging')
An exception has occurred, use %tb to see the full traceback.SystemExit: -1
C:\Users\xx\Documents\Anaconda\lib\site-packages\IPython\core\interactiveshell.py:2969: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.
warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)%tb
Traceback (most recent call last):File"", line 1, in
runfile('C:/Users/xxx.py', wdir='C:/Users/xx')File"C:\Users\xx\Documents\Anaconda\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 668, in runfile
execfile(filename, namespace)File"C:\Users\xx\Documents\Anaconda\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 108, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)File"C:/Users/xx/Documents/3dPackaging/VersandkartonsPacken.py", line 64, in
sys.exit(app.exec())SystemExit: -1
我不知道这可能是什么,但因为有一天这应该是一个独立的程序,我担心它可能会变得混乱,所以我宁愿修复它。 我应该尝试什么?
没有GUI.py它是不可重现的,所以这里是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(1127, 910) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.pushButton_schliessen = QtWidgets.QPushButton(self.centralwidget) self.pushButton_schliessen.setGeometry(QtCore.QRect(930, 770, 75, 23)) self.pushButton_schliessen.setObjectName("pushButton_schliessen") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(440, 20, 421, 31)) font = QtGui.QFont() font.setPointSize(20) self.label.setFont(font) self.label.setObjectName("label") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(170, 770, 75, 23)) self.pushButton.setObjectName("pushButton") self.tableWidget_input = QtWidgets.QTableWidget(self.centralwidget) self.tableWidget_input.setGeometry(QtCore.QRect(160, 80, 421, 671)) self.tableWidget_input.setObjectName("tableWidget_input") self.tableWidget_input.setColumnCount(0) self.tableWidget_input.setRowCount(0) self.tableWidget_output = QtWidgets.QTableWidget(self.centralwidget) self.tableWidget_output.setGeometry(QtCore.QRect(650, 80, 441, 671)) self.tableWidget_output.setObjectName("tableWidget_output") self.tableWidget_output.setColumnCount(0) self.tableWidget_output.setRowCount(0) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 1127, 21)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow","MainWindow")) self.pushButton_schliessen.setText(_translate("MainWindow","Schliessen")) self.label.setText(_translate("MainWindow","Versandkartons Packen")) self.pushButton.setText(_translate("MainWindow","Berechnen")) |
它似乎与此相关,应用程序永远不会在第一次运行中返回QCoreApplication。 但是,将其移动到函数中是行不通的。 我无法在控制台中重现实际使其在第二次运行中工作的行为。 似乎有些东西会将QCorEApplication变成一个有效的。
在两个现在删除的答案(不起作用)中,建议使用
这必须与当地制度的特殊性有关。 我们(原始问题的评论者)在干净的环境中从头开始安装需求时(即使环境与受影响的系统非常匹配)也无法重现错误。
请尝试重新安装您的环境,或在其他系统上运行此环境,并查看问题是否仍然存在。
我使用可能与问题有关的conda。 我刚刚用