0
我的基於Tkinter的程序需要定期執行一些「重」維護功能。 由於它是一個連續運行的程序,我只想在給定的空閒時間之後啓動這些功能。程序空閒一段時間後調用函數
你如何在Tkinter中做到這一點?我在http://etutorials.org/Programming/Python+tutorial/Part+III+Python+Library+and+Extension+Modules/Chapter+16.+Tkinter+GUIs/16.9+Tkinter+Events/中發現了關於after_idle的大概情況,但事件循環空閒時,這隻會被稱爲。我需要它來運行我的功能,例如,在空閒時間10分鐘後。
~~~
Mr.Steak給了我所需要的答案 - 我只是修改了它稍微如下能夠在不同的時間間隔,執行不同的任務使用空閒時間變量:
import time
from Tkinter import *
root = Tk()
def resetidle(*ignore):
global idletime
for k in idletime: k['tlast']=None
def tick(*ignore):
global idletime
t=time.time() # the time in seconds since the epoch as a floating point number
for k in idletime:
if not k['tlast']:
k['tlast'] = t
else:
if t-k['tlast']>k['tmax']:
k['proc']()
k['tlast'] = None
root.after(5000, tick) # reset the checks every 5''
idletime=[{'tlast':None,'tmax':60,'proc':test1}, # every 1'
{'tlast':None,'tmax':3600,'proc':test2}] # every 1h
root.after(5000, tick)
root.bind('<Key>', reset)
root.bind('<Button-1>', reset)
root.mainloop()