例えば:
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() の使用を避けるべきであることを読みました。それで、スレッドを正しく待たなければならない理由と方法を誰かが説明できればいいのですが?ステップ 2 は、ステップ 1 およびステップ 3 よりもはるかに長い時間がかかるため、スレッド内にあります。そうしないと、GUI がブロックされます。
私はPythonが初めてで、最初の「プログラム」を書こうとしています。経験が浅いので間違っているかもしれませんが…
よろしく、デビッド。