我遇到一个问题,当我选择不保存文件并在系统窗口中单击“取消”时,程序将崩溃。这是我收到的错误:

Traceback (most recent call last):
File "BasicEmail.py", line 166, in save_content
with open(file_name[0], 'w') as f:
FileNotFoundError: [Errno 2] No such file or directory: ''


这是我正在使用的代码:

def save_content(self):
    file_name = QtWidgets.QFileDialog.getSaveFileName(self,'Save File',os.getenv('HOME'))
    if file_name:
        with open(file_name[0], 'w') as f:
            my_text = self.content.toPlainText()
            f.write(my_text)


先感谢您。我知道我一定很想念东西。

最佳答案

if file_name:语句将始终为True,因为getSaveFileName()函数始终返回具有以下结构的元组:(filename, filters),最好获取名称并验证字符串是否为空。

def save_content(self):
    file_name, _ = QtWidgets.QFileDialog.getSaveFileName(self, 'Save File', os.getenv('HOME'))
    if file_name != "":
        with open(file_name, 'w') as f:
            my_text = self.content.toPlainText()
            f.write(my_text)


加:您可以使用QtCore.QDir.homePath()代替os.getenv('HOME')

关于python - QFileDialog上的“取消”按钮,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45748290/

10-15 14:14