Tkinter实现页面组件的刷新

使用Python自带的GUI库Tkinter实现组件的刷新:

python3版本中,Tkinter的主类在调用mainloop运行后就会进入无限循环状态,想要实现组件数据的同步与刷新,主要靠after函数来实现循环的更新

tk.after(time,fun)
其中time是每次循环的间隔时间,单位为毫秒(ms),fun为每次循环调用的函数,实现你想执行的刷新效果

现在通过一段简单的代码来展示after函数,该代码的作用是实现一个更新当前时间的变迁

import tkinter as tk
from tkinter import *
import time as cur_time


class MainWindow(tk.Tk):
    def __init__(self, *args, **kw):
        super().__init__()
        self.geometry("730x400+700+400")  # 设置窗口长宽和坐标

        # 窗口标题
        self.title('Label')
        # 初始按钮,后面会被覆盖
        self.label1 = Label(self, text='', width=70, height=10)
        # 设置按钮位置
        self.label1.grid(row=0, column=1)
        # 调用after函数
        self.after(100, self.refresh_data)
        # 窗口显示
        self.mainloop()

    def refresh_data(self):
        print('我在刷新')
        # 需要刷新数据的操作,从time函数活的当前时间
        self.label1 = Label(self, text=cur_time.time(), font=18, relief="solid", width=25, height=5, padx=2)
        self.label1.grid(row=0, column=1, padx=15, pady=20)
        # 递归循环调用after
        self.after(100, self.refresh_data)  # 这里的100单位为毫秒


if __name__ == '__main__':
    MainWindow = MainWindow()

效果:

在这里插入图片描述
在这里插入图片描述
可以看到标签的内容一直在变化

总结:

after函数的调用并不难,只要多练习一下就能掌握
另外,Tk类提供的after方法不是循环的计时器,该函数相当于不会堵塞进程的sleep,需要循环计时的话,就再在函数里面再次调用after

  • 1
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值