1、说明
由于tkinter一旦开始执行进入mainloop,就相当于进入一个界面死循环状态,出不来;如果想做定时刷新tkinter界面的控件数据,必须调用tkinter.TK()自带的after函数,这个函数可以设定定时执行某个任务的时间,使用别的python定时执行任务的模块是不行的。
2、使用方式
实现一个刷新数据函数调用tkinter.TK()自带的after函数,在调用mainloop函数之前,将这个刷新数据函数调用,则可以实现定时刷新数据功能,参考代码如下:
import tkinter as tk
class Questions(tk.Tk):
def __init__(self, *args, **kw):
super().__init__()
self.wm_title('CSSE1001 Queue')
self.configure(background='white')
self.wm_minsize(1440, 776) # 设置窗口最小化大小
self.wm_maxsize(1440, 2800) # 设置窗口最大化大小
self.resizable(width=False, height=True) # 设置窗口宽度不可变,高度可变
self.run()
self.refresh_data()
self.mainloop()
def refresh_data(self):
# 需要刷新数据的操作
# 代码...
self.after(10000, self.refresh_data) # 这里的10000单位为毫秒
def run(self):
pass
if __name__ == '__main__':
question = Questions()
3、额外补充别的定时执行任务程序
介绍轻量级第三方模块schedule,需要使用 pip install schedule导入才能使用
使用时功能相对于crontab
import schedule
import time
def job():
print("I'm working...")
schedule.every(10).minutes.do(job) # 每隔10分钟执行一次任务
schedule.every().hour.do(job) # 每隔一小时执行一次任务
schedule.every().day.at("10:30").do(job) # 每天10:30执行一次任务
schedule.every(5).to(10).days.do(job) # 每5-10天执行一次任务
schedule.every().monday.do(job) # 每周一的这个时候执行一次任务
schedule.every().wednesday.at("13:15").do(job) # 每周三13:15执行一次任务
while True:
schedule.run_pending()
time.sleep(1)
————————————————
版权声明:本文为CSDN博主「码码更快乐」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012089823/article/details/83009900