ich habe ein Problem mit QFileDialog. Ich möchte per getOpenFileName einen Dialog öffnen, in dem der Nutzer eine Datei auswählen kann. Ich habe eine kleine GUI mit dem Qt Designer erstellt, und dann die resultierende ui-Datei per pyuic5 in Python-Code umgewandelt. Hier ist der Code:
Code: Alles auswählen
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.button = QtWidgets.QPushButton(self.centralwidget)
self.button.setGeometry(QtCore.QRect(40, 40, 91, 21))
self.button.setObjectName("button")
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(170, 40, 113, 20))
self.lineEdit.setObjectName("lineEdit")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 18))
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.button.setText(_translate("MainWindow", "select file"))
self.button.clicked.connect(openFile)
def openFile():
filename, _ = QFileDialog.getOpenFileName(self, "Choose picture", "*.jpg")
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
Ich habe lediglich die Funktion openFile hinzugefügt, und diese mit dem Button verbunden.
Wenn ich jetzt aber das Skript ausführe und auf den Button klicke, wird anstelle eines öffnenden Dialogs die Anwendung beendet. Kann mir jemand sagen warum das nicht funktioniert?
Grüße
moe