Ich folge ein Tutorial über die Erstellung einer grundlegenden GUI mit QT-Ersteller und Python. Ich habe erfolgreich ein Fenster mit einer Schaltfläche erstellt, die das Fenster beim Drücken schließt. Es funktioniert gut in QT Creator und ich konvertierte die UI-Datei in Py und es läuft und erstellt das Fenster wie erwartet, wenn ich ein Eingabeaufforderungsfenster öffne und es mit python main.py
aufrufen. Ich arbeite gerne in der spyder IDE und möchte das auch weiterhin tun. Das Problem ist, dass wenn ich die main.py in spyder öffnen und führen Sie es zuerstQT Creator konvertiert ui zu py arbeitet in Windows-Terminal, aber nicht mit Spyder IDE
An exception has occurred, use %tb to see the full traceback.
SystemExit: -1
dann den Fehler geben, wenn ich versuchen, es ein zweites Mal der Kernel hängen zu laufen.
Was ist erforderlich, um dieses Skript erfolgreich in Spyder auszuführen? Hier ist der Code:
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_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(400, 300)
self.centralWidget = QtGui.QWidget(MainWindow)
self.centralWidget.setObjectName(_fromUtf8("centralWidget"))
self.horizontalLayout = QtGui.QHBoxLayout(self.centralWidget)
self.horizontalLayout.setMargin(11)
self.horizontalLayout.setSpacing(6)
self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
self.pushButton = QtGui.QPushButton(self.centralWidget)
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.horizontalLayout.addWidget(self.pushButton)
MainWindow.setCentralWidget(self.centralWidget)
self.menuBar = QtGui.QMenuBar(MainWindow)
self.menuBar.setGeometry(QtCore.QRect(0, 0, 400, 21))
self.menuBar.setObjectName(_fromUtf8("menuBar"))
MainWindow.setMenuBar(self.menuBar)
self.mainToolBar = QtGui.QToolBar(MainWindow)
self.mainToolBar.setObjectName(_fromUtf8("mainToolBar"))
MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar)
self.statusBar = QtGui.QStatusBar(MainWindow)
self.statusBar.setObjectName(_fromUtf8("statusBar"))
MainWindow.setStatusBar(self.statusBar)
self.retranslateUi(MainWindow)
QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), MainWindow.close)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
self.pushButton.setText(_translate("MainWindow", "Close", None))
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
Wie läuft es von Spyder? Rufen Sie es gerade von einer Konsole in der IDE an? Hat Spyder eine Möglichkeit, externe Prozesse zu starten? –
Ich öffne die Datei und drücke dann run (f5). Ich bin nicht sicher über Ihre dritte Frage – kaminsknator