Pyqt5 PyQt getsavefilename在取消保存时显示错误“Python已停止工作”

Pyqt5 PyQt getsavefilename在取消保存时显示错误“Python已停止工作”,pyqt5,python,pyqt,qfiledialog,Pyqt5,Python,Pyqt,Qfiledialog,从文本编辑保存文件时,getsavefilename有问题 当我保存文件时,它正在工作,没有问题,但当我想关闭保存对话框而不保存时,它会给我错误: python已经停止工作 我正在使用python 3.6 代码 错误截图 当您取消QFileDialog时,它会以空文本的形式返回,当您想打开一个不存在名称的文件时,它会生成该错误。此外,如果使用with打开文件,则不必关闭文件,只需退出with,它将自动关闭 def fileSave(self): filename, _ = QFileDi

从文本编辑保存文件时,getsavefilename有问题

当我保存文件时,它正在工作,没有问题,但当我想关闭保存对话框而不保存时,它会给我错误:

python已经停止工作

我正在使用python 3.6

代码

错误截图

当您取消QFileDialog时,它会以空文本的形式返回,当您想打开一个不存在名称的文件时,它会生成该错误。此外,如果使用with打开文件,则不必关闭文件,只需退出with,它将自动关闭

def fileSave(self):
    filename, _ = QFileDialog.getSaveFileName(self, 'Save A File', '/home')

    if filename != "":
        with open(filename, 'w') as f:
            text = self.textEdit.toPlainText()
            f.write(text)
更新:


谢谢你现在它正在工作,你能告诉我如何在PyQT5中将文本编辑中的文本打印为pdf文件吗?当我运行此代码时,它会给我错误def filePrintPdfself:fn,QFileDialog.getSaveFileNameself,Export pdf,None,PDF档案.PDF ;;;所有文件如果fn:if QFileInfofn.suffix.isEmpty:fn+='.pdf'打印机=QPrinterQPrinter.HighResolution打印机.setOutputFormatQPrinter.PdfFormat打印机.setOutputFileNamefn self.textEdit.document.print_printer@Parwiz正如我告诉你的,最好的感谢方式是将我的答案标记为正确,如果你不知道如何做,请查看
def fileSave(self):
    filename, _ = QFileDialog.getSaveFileName(self, 'Save A File', '/home')

    if filename != "":
        with open(filename, 'w') as f:
            text = self.textEdit.toPlainText()
            f.write(text)
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtPrintSupport import *

class Widget(QWidget):
    def __init__(self, *args, **kwargs):
        QWidget.__init__(self, *args, **kwargs)
        lay = QVBoxLayout(self)
        self.textEdit = QTextEdit()
        self.button = QPushButton("Print")
        lay.addWidget(self.textEdit)
        lay.addWidget(self.button)

        self.button.clicked.connect(self.filePrintPdf)

    def filePrintPdf(self): 
        fn, _ = QFileDialog.getSaveFileName(self, "Export PDF", None, "PDF files (.pdf);;All Files ()") 
        if fn != "": 
            if QFileInfo(fn).suffix() == "": fn += '.pdf' 
        printer = QPrinter(QPrinter.HighResolution) 
        printer.setOutputFormat(QPrinter.PdfFormat) 
        printer.setOutputFileName(fn) 
        self.textEdit.document().print_(printer)

if __name__ == '__main__':
    import sys

    app = QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())