例如:
import threading
import time
import Tkinter
class MyThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
print "Step Two"
time.sleep(20)
class MyApp(Tkinter.Tk):
def __init__(self):
Tkinter.Tk.__init__(self)
self.my_widgets()
def my_widgets(self):
self.grid()
self.my_button = Tkinter.Button(self, text="Start my function",
command=self.my_function)
self.my_button.grid(row=0, column=0)
def my_function(self):
print "Step One"
mt = MyThread()
mt.start()
while mt.isAlive():
self.update()
print "Step Three"
print "end"
def main():
my_app = MyApp()
my_app.mainloop()
if __name__ == "__main__":
main()
好吧,如果我开始我的示例,它会按预期工作。我单击一个按钮,my_function 启动并且 GUI 响应。但我读过我应该避免使用 update()。所以,如果有人能解释为什么以及如何正确地等待线程,那就太好了?第二步是在一个线程中,因为它比第一步和第三步花费的时间要长得多,否则它会阻塞 GUI。
我是 Python 新手,我正在尝试编写我的第一个“程序”。也许我的想法不对,因为我不是很有经验......
问候,大卫。