【发布时间】:2017-07-25 11:40:54
【问题描述】:
我想存储一个文件。出于这个原因,我使用带有'with'语句的filedialog。只要我选择一个文件并保存它,一切正常。但是,当文件对话框被取消时,我收到以下错误:
文件“...\src\test.py”,第 7 行,在 使用 filedialog.asksaveasfile(mode='w') 作为 myFile: 属性错误:进入
有没有办法用'with'语句来完成这个?
import tkinter as tk
from tkinter import filedialog
root = tk.Tk()
with filedialog.asksaveasfile(mode='w') as myFile:
myFile.write('Test')
root.mainloop()
【问题讨论】:
-
在其周围使用
try...except块。当您取消对话框时,filedialog.asksaveasfile()将返回None并且None中没有__enter__()来处理with语句。您可以编写自己的asksaveasfile()方法(无论如何,它只是对filedialog.SaveAs()的方便包装)以返回有效的with结构无论如何,但随后必须将myFile设置为None并且您会在完全否定@987654333@ 声明的目的之前,必须对其进行检查。 -
不要编辑您对问题的答案,而是将其作为答案发布在下面。
标签: python-3.x tkinter with-statement filedialog