现在,我了解了您想要更好的东西(秒表),我建议使用root.after命令
from Tkinter import *import tkMessageBoximport threadingimport timeroot = Tk()root.geometry("450x250+300+300")root.title("Raspberry PI Test")print dir(root)count = 0def start_counter(): global count count = 500 root.after(1,update_counter)def update_counter(): global count count -= 1 if count < 0: count_complete() else: root.after(1,update_counter)def count_complete(): print "DONE COUNTING!! ... I am now back in the main thread"def mymessage(): tkMessageBox.showinfo(title="alert", message="Hello World!")buttonLoop = Button(root, text="Start Loop", command=myloop)buttonLoop.place(x=5, y=15)buttonMessage = Button(root, text="Start Loop", command=mymessage)buttonMessage.place(x=85, y=15)root.mainloop()(以下为原始答案)
使用线程
from Tkinter import *import tkMessageBoximport threadingimport timeroot = Tk()root.geometry("450x250+300+300")root.title("Raspberry PI Test")print dir(root)def myloop(): def run(): count = 0 while (count < 500) and root.wm_state():print 'The count is:', countcount = count + 1time.sleep(1) root.after(1,count_complete) thread = threading.Thread(target=run) thread.start()def count_complete(): print "DONE COUNTING!! ... I am now back in the main thread"def mymessage(): tkMessageBox.showinfo(title="alert", message="Hello World!")buttonLoop = Button(root, text="Start Loop", command=myloop)buttonLoop.place(x=5, y=15)buttonMessage = Button(root, text="Start Loop", command=mymessage)buttonMessage.place(x=85, y=15)root.mainloop()请注意,当您显示将在Windows api级别阻塞的信息框时,线程计数将一直等到关闭为止…为了解决该问题,您可以将线程替换为多处理,我认为



