Tkinter中无法解释的无限循环

时间:2015-05-31 18:23:41

标签: python tkinter

我正在学习Tkinter for python2,在那里我遇到了这个代码。这在tkinter中创建了一个窗口,每隔1秒增加label的值。虽然代码运行完全正常。你能告诉我为什么没有观察到无限循环在每千秒之后控件返回count()并且控件应该从未到达最后一行代码?

import Tkinter as tk

counter = 0 
def counter_label(label):
  def count():
    global counter
    counter += 1
    label.config(text=str(counter))
    label.after(1000, count)
  count()


root = tk.Tk()
root.title("Counting Seconds")
label = tk.Label(root, fg="green")
label.pack()
counter_label(label)
button = tk.Button(root, text='Stop', width=25, command=root.destroy)
button.pack()
root.mainloop()

传递给函数def counter_label的标签变量也只是原始变量的副本,因此更改它不会影响原始变量。它是怎么回事?

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

  1. 以毫秒计测,即,1秒
  2. 到达了
  3. count()并且它是一个无限循环(如果root.mainloop()正在运行)。
  4. label.after(1000, count)安排count函数并立即返回。应该运行tkinter事件循环,否则将不再调用count()