我最近开始学习如何使用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()不断循环遍历代码?我将如何使这个代码工作,这将取代之前显示的文本行,还是会在之前显示的文本下面写一个新的文本行?
答案 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()