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




