Python Tkinter开发文本编辑器保存文件报File Name Not Valid如何解决
Tkinter文本编辑器保存报错解决方案
错误根源
你的代码中文件对话框的通配符格式配置错误,同时默认扩展名设置不合理,共同触发了文件名合法性校验失败:
- 所有
filetypes参数中,扩展名前漏写了英文句点.,例如你写的*txt不符合系统通配符规则,正确格式应为*.txt asksaveasfilename的defaultextension设为.*会导致系统无法自动补全合法扩展名,进一步触发校验错误
修复后的核心代码修改
1. open_file函数修改
def open_file(): my_text.delete("1.0", END) # 修正filetypes的通配符格式,补全. text_file = filedialog.askopenfilename(title="Open File", filetypes=(("Text Files", "*.txt"), ("HTML Files", "*.html"))) name = text_file status_bar.config(text=name) text_file = open(text_file, 'r') stuff = text_file.read() my_text.insert(END, stuff) text_file.close()
2. save_as_file函数修改
def save_as_file(): # 修正defaultextension和filetypes格式,默认使用txt作为保存扩展名 text_file = filedialog.asksaveasfilename(defaultextension=".txt", title="Save File", initialdir="C:/gui/", filetypes=(("Text Files", "*.txt"), ("HTML Files", "*.html"))) if text_file: name = text_file name = name.replace("C:/gui/", "") root.title(f'{name} - NewNotepad') text_file = open(text_file, 'w') text_file.write(my_text.get(1.0, END)) text_file.close()
补充说明
如果你需要支持保存时自动匹配选中的文件类型补全扩展名,可以额外添加逻辑读取用户选中的文件类型动态修改defaultextension,上述修改已经可以解决「File Name Not Valid」的报错问题。
内容的提问来源于stack exchange,提问作者Superior125
相关产品推荐
相关产品推荐

