前几天在学习 python 的过程中,心血来潮想编写个 python 工具来更方便的处理些日常琐碎的事情。在编写的时候,在 UI 数据更新这遇到了问题:
我通过使用 tkinter 下的 label 标签来显示我所需要显示的数据,把变量赋值给 text,发现 UI 上显示的数据并不能随着变量的变化而变化。
之后询问度娘,了解了 label 标签下有个 textvariable,他是作为 label 下的变量属性,会随着 mainloop()循环,自动进行更新。
info = tkinter.StringVar()
info.set('')
tkinter.Label(master,textvariable=info).pack() # master为框架父容器名
需要注意的是 textvarable 的值须为 tkinter.StringVar(),每次的数据变更都需要通过 set 函数为 info 更新。
以下是一个读秒完整实例
import tkinter
from threading import Timer
def countdown():
global time, thread_01
time += 1
info.set(str(time))
thread_01 = Timer(1, countdown)
thread_01.start()
app = tkinter.Tk()
time = 0
info = tkinter.StringVar()
info.set(str(time))
tkinter.Label(app, textvariable=info).pack()
thread_01 = Timer(1, countdown)
# 启动线程01
thread_01.start()
app.update()
app.mainloop()
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于