Tkinter定时刷新页面或数据

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)

 

  • 40
    点赞
  • 131
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
在Python的Tkinter库中,要实现刷新数据的功能,可以使用Tkinter自带的after函数。这个函数可以设定定时执行某个任务的时间。通过调用after函数,可以在指定的时间间隔内刷新数据。这样,在Tkinter的主循环(mainloop)执行期间,可以定时更新界面上的控件数据。 具体实现时,可以先定义一个刷新数据的函数,然后在调用mainloop函数之前,将这个刷新数据函数通过after函数进行定时调用。这样,每当定时器触发时,刷新数据函数就会被执行一次,从而实现数据刷新。以下是一个示例代码: ```python import tkinter as tk def refresh_data(): # 在这里更新需要刷新数据 # 例如,可以更新标签的文本信息或者重新绘制画布等 # 通过递归调用,实现定时刷新数据 root.after(1000, refresh_data) # 这里的1000表示刷新数据的时间间隔,单位为毫秒 # 创建主窗口 root = tk.Tk() # 在调用mainloop函数之前,将刷新数据函数调用一次 refresh_data() # 进入主循环,监听事件 root.mainloop() ``` 在上述示例代码中,refresh_data函数用于更新需要刷新数据。在函数的最后,通过递归调用after函数,实现定时刷新数据的功能。这里的时间间隔设定为1000毫秒,即每隔1秒刷新一次数据。可以根据实际需求调整刷新的时间间隔。 这样,在Tkinter的主循环执行期间,refresh_data函数会被定时调用,从而实现了数据刷新功能。通过在refresh_data函数中更新需要刷新数据,可以实时显示最新的数据信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值