如何在Tkinter保存对话框中获取输入的文件名
解决Tkinter保存文件对话框获取文件名的问题
你的问题出在对asksaveasfilename的返回值理解上:这个函数直接返回用户输入/选择的完整文件名(包含路径),它不是Tkinter控件,没有.get()方法,所以调用wfile.get()会报错。
修正后的代码如下:
def save_file(): files = [('Text Document','*.txt'), ('Python Files','*.py')] # 获取用户输入的文件名,自动添加默认后缀(如果用户没加) filename = asksaveasfilename(filetypes=files, defaultextension=".txt") # 判断用户是否取消了对话框,避免空字符串导致报错 if not filename: return # 使用with语句自动关闭文件,更安全简洁 with open(filename, "w") as wrfile: wrfile.write(txt.get(1.0, END))
关键说明:
- 当用户输入
abc时,asksaveasfilename会自动加上.txt后缀(因为设置了defaultextension=".txt"),返回的filename是类似/xxx/abc.txt的完整路径;如果用户输入abc.txt,则直接返回带路径的abc.txt。 - 必须判断
filename是否为空:如果用户点击对话框的“取消”按钮,函数会返回空字符串,此时直接返回避免后续打开空文件名出错。
内容的提问来源于stack exchange,提问作者Kishan
相关产品推荐
相关产品推荐

