You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

PyQt5 getSaveFileName取消保存时触发“Python已停止工作”错误求助

解决PyQt5保存对话框取消时Python崩溃的问题

嘿,这个问题我之前也碰到过!原因其实很简单:当你点击保存对话框的取消按钮时,QFileDialog.getSaveFileName()返回的第一个元素是空字符串,而你直接拿这个空串去调用open()函数,系统根本不知道要打开哪个文件,自然就崩溃了。

咱们只需要加个简单的判断,确认用户确实选择了有效的文件名之后再执行保存操作就行。修改后的代码如下:

def fileSave(self):
    filename = QFileDialog.getSaveFileName(self, 'Save A File', '/home')
    # 检查是否获取到了有效文件名(取消时filename[0]为空)
    if filename[0]:
        with open(filename[0], 'w') as f:
            text = self.textEdit.toPlainText()
            f.write(text)
            # 小提示:with语句会自动帮你关闭文件,所以这里不需要手动调用f.close()啦

这样修改后,当用户取消保存时,代码会跳过保存逻辑,自然就不会触发崩溃错误了。另外顺便提一句,with语句本身就负责文件的打开和关闭,原来的f.close()属于冗余代码,删掉也不影响功能哦。

内容的提问来源于stack exchange,提问作者Habib

火山引擎 最新活动