当前位置:   article > 正文

Tkinter实现页面组件的刷新_tkinter动态刷新数据

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()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

效果:

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

总结:

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/892389
推荐阅读
相关标签
  

闽ICP备14008679号