我正在尝试通过qfiledialog制作具有保存功能的GUI。但是,当我尝试保存时,它每次都会自我终止。
这是我通过按钮传递的功能的代码。
def saveInput(self):
name = QtWidgets.QFileDialog.getSaveFileName(MainWindow, "Save File", '/', '.txt')
file = open(name, 'w')
text = self.lineEdit.text()
file.write(text)
file.close()
这是整个代码:
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QFileDialog
class Ui_MainWindow(object):
def saveInput(self):
name = QtWidgets.QFileDialog.getSaveFileName(MainWindow, "Save File", '/', '.txt')
file = open(name, 'w')
text = self.lineEdit.text()
file.write(text)
file.close()
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(431, 275)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.save = QtWidgets.QPushButton(self.centralwidget)
self.save.setGeometry(QtCore.QRect(70, 140, 75, 23))
self.save.setObjectName("save")
self.save.clicked.connect(self.saveInput)
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(70, 20, 113, 20))
self.lineEdit.setObjectName("lineEdit")
self.lineEdit.text()
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 431, 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.save.setText(_translate("MainWindow", "Save"))
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_())
qfiledialogs getSaveFileName返回元组。您想要该元组的第一部分,即输入的名称。
name = QtWidgets.QFileDialog.getSaveFileName(MainWindow, "Save File", '/', '.txt')[0]
还要注意,如果您将从命令行/终端运行脚本,它将输出一个错误,您可以用来诊断此类问题。