2012-05-01 2 views
7

5秒間待ってからテキストボックス内のテキストを削除しようとしていますが、代わりにプログラムが実行されず、他のすべてのものに対してスリープします。また、テキストが凍っている間に他のコードを実行できるように、テキストボックスをスリープ状態にする方法がありますか?Python time.sleep

from time import time, sleep 
from Tkinter import * 

def empty_textbox(): 
    textbox.insert(END, 'This is a test') 
    sleep(5) 
    textbox.delete("1.0", END) 

root = Tk() 

frame = Frame(root, width=300, height=100) 
textbox = Text(frame) 

frame.pack_propagate(0) 
frame.pack() 
textbox.pack() 

empty_textbox() 

root.mainloop() 
+1

私はTkinterの持つ多くの経験を持っていないが、私はあなたがイベントループまたはAのいくつかの並べ替えを使用するか必要があるかなり確信している:ここで

は、メソッドの後に使用するスクリプトの修正版です別スレッド – sberry

+1

@sberry:スレッドではありません。すでにイベントループが実行されています。これは、後で特定の時刻に処理される予定のキューにイベントを配置する 'after'を使って簡単に解決されます。 –

答えて

11

あなたは本当にTkinterのafter methodではなくtime.sleep(...)ようなものを使用する必要があります。

このother stackoverflow questionでafterメソッドを使用する例があります。

from time import time, sleep 
from Tkinter import * 

def empty_textbox(): 
    textbox.delete("1.0", END) 

root = Tk() 

frame = Frame(root, width=300, height=100) 
textbox = Text(frame) 

frame.pack_propagate(0) 
frame.pack() 
textbox.pack() 

textbox.insert(END, 'This is a test') 
textbox.after(5000, empty_textbox) 

root.mainloop() 
+1

ありがとうございました – Crispy

関連する問題