循环使用Python 2.7 Tkinter来更改Label

时间:2016-12-21 02:12:07

标签: python python-2.7 tkinter

我最近开始学习如何使用Python' s(2.7)Tkinter,我遇到了Label小部件。我希望能够更改该窗口小部件显示的内容(不是写新文本,而是替换以前的文本。这是我尝试过的:

number=0
from Tkinter import *
root = Tk()
var = StringVar()
number=number+1
label = Label( root, textvariable=var, relief=RAISED )
var.set(str(number))
label.pack()
root.mainloop()

当我运行它时,它只显示" 1"。我知道它并没有遍历数字,但是没有.mainloop()不断循环遍历代码?我将如何使这个代码工作,这将取代之前显示的文本行,还是会在之前显示的文本下面写一个新的文本行?

1 个答案:

答案 0 :(得分:2)

root.mainloop()是tkinter自己的事件处理程序。它等待并处理来自小部件的事件,而不是用户代码块。要定期执行您自己的代码块,您可以使用root.after()

from Tkinter import *

root = Tk()
var = StringVar()
Label(root, textvariable=var, relief=RAISED).pack()

def update_number(value):
    var.set(value)
    root.after(1000, update_number, value+1) # run again 1 second later

update_number(0) # initiate the update process
root.mainloop()