Python 关闭对话框时出现了什么错误
我正在学习PyQt,我有一个小应用程序,它似乎可以正常工作,当我点击对话框右上角的X关闭它时。当我这样做并返回控制台时,我看到出现了一个异常,如下所示:Python 关闭对话框时出现了什么错误,python,pyqt,Python,Pyqt,我正在学习PyQt,我有一个小应用程序,它似乎可以正常工作,当我点击对话框右上角的X关闭它时。当我这样做并返回控制台时,我看到出现了一个异常,如下所示: To exit: use 'exit', 'quit', or Ctrl-D. An exception has occurred, use %tb to see the full traceback. SystemExit: 0 In [2]: %tb Traceback (most recent call last): File
To exit: use 'exit', 'quit', or Ctrl-D.
An exception has occurred, use %tb to see the full traceback.
SystemExit: 0
In [2]: %tb
Traceback (most recent call last):
File "<ipython-input-1-4524246fa84a>", line 1, in <module>
runfile('C:/Users/21025/simpleAdder.pyw', wdir='C:/Users/21025')
File "C:\Users\21035\AppData\Local\Continuum\Anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 586, in runfile
execfile(filename, namespace)
File "C:/Users/21035/simpleAdder.pyw", line 81, in <module>
sys.exit(app.exec_())
SystemExit: 0
如消息所示,代码包括
sys.exit(app.exec_u1;())
,它将执行GUI,然后调用退出例程。您从一个交互式提示中调用了它,因此它没有退出,而是通知您试图从您调用的对象中退出。如果您希望能够从交互式提示中调用此代码而不出现错误,只需删除退出部分,将sys.exit(app.exec_())
更改为app.exec_()
以扩展说明:将sys
想象为Python本身。因此,当您的GUI完成执行时,正如@mdurant所说,您正在告诉python退出它自己。。。然而,你身处一个互动的环境中。如果您是从终端或在独立应用程序中运行,那么这仍然是很好的代码,但是在交互环境中,您试图退出交互环境的核心组件(python),这就是为什么它被认为是错误的原因。
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName(_fromUtf8("Dialog"))
Dialog.resize(673, 565)
self.v1Input = QtGui.QLineEdit(Dialog)
self.v1Input.setGeometry(QtCore.QRect(50, 70, 71, 20))
self.v1Input.setObjectName(_fromUtf8("v1Input"))
self.v2Input = QtGui.QLineEdit(Dialog)
self.v2Input.setGeometry(QtCore.QRect(150, 70, 71, 20))
self.v2Input.setObjectName(_fromUtf8("v2Input"))
self.v3Input = QtGui.QLineEdit(Dialog)
self.v3Input.setGeometry(QtCore.QRect(250, 70, 71, 20))
self.v3Input.setObjectName(_fromUtf8("v3Input"))
self.calc_result = QtGui.QLineEdit(Dialog)
self.calc_result.setGeometry(QtCore.QRect(420, 70, 113, 20))
self.calc_result.setObjectName(_fromUtf8("calc_result"))
self.label = QtGui.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(60, 50, 46, 13))
self.label.setObjectName(_fromUtf8("label"))
self.label_2 = QtGui.QLabel(Dialog)
self.label_2.setGeometry(QtCore.QRect(160, 50, 46, 13))
self.label_2.setObjectName(_fromUtf8("label_2"))
self.label_3 = QtGui.QLabel(Dialog)
self.label_3.setGeometry(QtCore.QRect(260, 50, 46, 13))
self.label_3.setObjectName(_fromUtf8("label_3"))
self.label_4 = QtGui.QLabel(Dialog)
self.label_4.setGeometry(QtCore.QRect(450, 50, 46, 13))
self.label_4.setObjectName(_fromUtf8("label_4"))
self.pushButton = QtGui.QPushButton(Dialog)
self.pushButton.setGeometry(QtCore.QRect(200, 230, 75, 23))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.retranslateUi(Dialog)
QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.v1Input.clear)
QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.v2Input.clear)
QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.v3Input.clear)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(_translate("Dialog", "Dialog", None))
self.label.setText(_translate("Dialog", "Val 1", None))
self.label_2.setText(_translate("Dialog", "Val 2", None))
self.label_3.setText(_translate("Dialog", "Val 3", None))
self.label_4.setText(_translate("Dialog", "Result", None))
self.pushButton.setText(_translate("Dialog", "Clear Inputs", None))
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Dialog = QtGui.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())