Реализация функции автосохранения с помощью Python и Tkinter

Это может быть общий вопрос. Я изменяю код Python, написанный бывшим коллегой. Основная цель кодекса

  1. Прочитать какой-нибудь файл из локального
  2. Откройте графический интерфейс, чтобы внести некоторые изменения
  3. Сохраните файл на локальном

Графический интерфейс написан на Python и Tkinter. На самом деле я не очень хорошо знаком с Tkinter. Прямо сейчас я хочу реализовать функцию автосохранения, которая работает вместе с mainloop() Tkinter и автоматически сохраняет измененные файлы каждые 5 минут. Я думаю, что мне понадобится второй поток, чтобы сделать это. Но я не уверен, как это сделать. Любые идеи или примеры будут высоко оценены! Спасибо


person James Guo    schedule 20.08.2015    source источник
comment
Нет, лучшее решение — использовать метод tkinter after.   -  person Eric Levieil    schedule 20.08.2015


Ответы (1)


Как говорится в комментарии, используйте рекурсию «после».

import Tkinter
root = Tkinter.Tk()

def autosave():
    # do something you want
    root.after(60000 * 5, autosave) # time in milliseconds

autosave() 
root.mainloop()

Также возможно потоковое решение:

import threading
import time
import Tkinter

root = Tkinter.Tk()

def autosave():
    while True:
        # do something you want
        time.sleep(60 * 5)

saver = threading.Thread(target=autosave)
saver.start()
root.mainloop()

перед уходом я использую sys.exit(), чтобы убить все запущенные потоки и графический интерфейс. Не уверен, что это правильный способ сделать это или нет.

person Speaking Code    schedule 20.08.2015
comment
Большое спасибо! Это действительно полезно!! - person James Guo; 21.08.2015