在Tkinter中快速更换标签?

时间:2019-06-22 00:57:43

标签: python tkinter

我想在Tkinter中尽快显示一些数字。我正在尝试做的程序,会发送许多号码,并应显示这些号码。

在类似的环境中,色粉必须非常快速地更改标签。

from tkinter import *
import time
window = Tk()
lbl13 = Label(window, text="-")
lbl13.grid(column=0, row=0)

x = 0
while 1:
   lbl13.config(text = str(x))
time.sleep(2)
x +=1

window.mainloop()

Tkinter窗口甚至没有在我的计算机上打开。那是因为我的硬件太弱了吗?我可以更改该程序也在计算机上运行的方式。谢谢您的回答!

2 个答案:

答案 0 :(得分:2)

无限while循环将阻止程序进入您调用window.mainloop()的行。您应该重复调用window.update()而不是最后调用window.mainloop():

from tkinter import *
import time
window = Tk()
lbl13 = Label(window, text="-")
lbl13.grid(column=0, row=0)

x = 0
while 1:
   lbl13.config(text = str(x))
   window.update()
   x +=1

答案 1 :(得分:1)

使用after和适当的mainloop可能是实现所需目标的一种更灵活的方法;它也可以在不同的上下文中重用,并且可以用于不仅仅增加标签上的数字的应用程序中。

也许是这样的:

import tkinter as tk


if __name__ == '__main__':

    def increment():
        var.set(var.get() + 1)
        label.after(1, increment)

    window = tk.Tk()
    var = tk.IntVar(0)
    label = tk.Label(window, textvariable=var)
    label.pack()

    increment()

    window.mainloop()