赞
踩
由于tkinter一旦开始执行进入mainloop,就相当于进入一个界面死循环状态,出不来;如果想做定时刷新tkinter界面的控件数据,必须调用tkinter.TK()自带的after函数,这个函数可以设定定时执行某个任务的时间,使用别的python定时执行任务的模块是不行的。
实现一个刷新数据函数调用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()
- 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)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。