Я только начал использовать Tkinter для класса программирования, и у меня возникли некоторые проблемы с использованием обработчиков диалоговых файлов. Методы fileopen и filesaveas работают правильно, а метод filesave - нет.
Спецификация требует, чтобы метод filesave сохранялся в последний сохраненный файл; если файл не был сохранен, то сохранить в последний открытый файл; иначе сохраните имя по умолчанию quiz_spec.py. По какой-то причине первые два вызова записи, похоже, не сохраняются, сохраняют файл, когда они достигнуты (и также не генерируют никаких ошибок).
Буду признателен, если кто-нибудь скажет мне, почему одни и те же вызовы сохранения в файловом хранилище и файловом хранилище работают по-разному, а также указывают на хороший пример функции сохранения 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")