Tkinter GUI でボタンを押して外部関数を呼び出そうとしています。関数 'insert' を Text 要素に挿入します。これは完全に機能します。time.sleep() がすぐ後に続かない限り。従わない場合、テキストは正しく更新されます。そうである場合、テキストは更新されませんが、関数はまだループを実行しているように見えますが、コンソールにテキストを喜んで出力します。
これが私のスクリプト例です:
from Tkinter import *
from time import sleep
def test_function(gui_self):
while True:
print "Debug message"
gui_self.main_.insert(END, "Test")
class GUI:
def __init__(self, master):
frame = Frame(master, width=300, height=500)
frame.pack()
self.main_ = Entry(frame, width=80, justify=CENTER)
self.main_.pack()
test_function(self)
root = Tk()
application = GUI(root)
root.mainloop()
これはうまくいきます。ただし、test_function を次のように変更すると、問題が発生するようです。
def test_function(gui_self):
while True:
print "Debug message"
gui_self.main_.insert(END, "Test")
sleep(5)
ここで間違っていることを修正するための提案はありますか? 私は、かなり基本的なレベルのユーザーとして、正しい構文を使用していないだけの問題だと確信しています。
補足として、「sleep」コマンドもプログラムを完全にフリーズしているように見えますが、これはかなり面倒で魅力的ではありません。スレッドを「パイプ」する以外に、可変的に設定された時間 (var = 1(秒) など) ループを一時停止する方法はありますか?
ありがとう。