【发布时间】:2011-07-23 04:51:45
【问题描述】:
我刚刚开始将 Tkinter 用于编程课程,并且在使用文件对话框处理程序时遇到了一些麻烦。 fileopen 和 filesaveas 方法可以正常工作,但 filesave 方法不能。 规范要求filesave方法要保存到最后保存的文件;如果没有文件被保存,则保存到最后打开的文件;否则保存到默认名称 quiz_spec.py。出于某种原因,前两个写调用似乎没有在到达时保存文件(并且也没有产生任何错误。) 如果有人能告诉我为什么 filesaveas 和 filesave 中的相同保存调用的功能不同,并且还指出了 tkFileDialog 保存功能的一个很好的例子,我们将不胜感激。
class FileMan():
def __init__(self):
self.lastsave = None
self.lastopen = None
def fileopen(self):
handle = askopenfile(mode = 'r')
print "name of file you picked = "+str(handle.name)
self.lastopen = handle
print "first line of data from file: "+handle.readline()
def filesave(self):
if (self.lastsave):
self.lastsave.write("Save: Some data to save into the file\n")
elif (self.lastopen):
self.lastopen.write("Save: Some data to save into the file\n")
else:
handle = open('quiz_spec.py', 'w')
handle.write("Save: This is the new content of test.txt :-)")
def filesaveas(self):
handle = asksaveasfile(mode = 'w', defaultextension = '.py')
print "name of file you picked = "+str(handle.name)
self.lastsave = handle
handle.write("SaveAs: Some data to save into the file\n")
【问题讨论】: