来自使用tkinter
设计的GUI应用程序,我希望在附加模式下将一些数据保存在文件中。要获取文件名,我使用asksaveasfilename
模块中的filedialog
。这是代码:
from tkinter.filedialog import asksaveasfilename
def save_file():
file_name = asksaveasfilename()
if file_name:
f = open(file_name, 'a')
contents = tab_chrono.text_area.get(1.0, 'end')
f.write(contents)
f.close()
当我在对话框中选择现有文件时,会出现问题,我收到一条警告,说明该文件将被覆盖。因为我追加到文件中,所以不是这样。
有没有办法摆脱这个警告?或者我是否必须自己重写askappendfilename
? filedialog
模块中缺少此功能。
答案 0 :(得分:4)
asksaveasfilename
对话框接受confirmoverwrite
参数以启用或禁用文件存在检查。
file_name = asksaveasfilename(confirmoverwrite=False)
这可以在tk_getSaveFile的Tk手册中找到,但似乎没有为tkinter记录。它是在Tk 8.5.11中引入的,因此在Tk术语(2011年11月发布)中相对较新。
答案 1 :(得分:2)
在选择现有文件时,使用选项confirmoverwrite
来阻止该消息。
import tkFileDialog
import time
class Example():
dlg = tkFileDialog.asksaveasfilename(confirmoverwrite=False)
fname = dlg
if fname != '':
try:
f = open(fname, "rw+")
text = f.read()
print text
except:
f = open(fname, "w")
new_text = time.time()
f.write(str(new_text)+'\n')
f.close()
修改:请注意,我使用f.read()
来打印现有文字
您可能希望删除f.read()
及后续print
语句,并将其替换为f.seek(0,2)
,将指针放在现有文件的末尾。
另一个选项如下,使用打开文件中的append
选项,如果文件尚不存在,将创建该文件:
import tkFileDialog
import time
class Example():
dlg = tkFileDialog.asksaveasfilename(confirmoverwrite=False)
fname = dlg
if fname != '':
f = open(fname, "a")
new_text = time.time()
f.write(str(new_text)+'\n')
f.close()