14

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

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()
4

1 に答える 1

22

実際には、ではなくTkinterafterメソッドtime.sleep(...)のようなものを使用する必要があります。

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

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()
于 2012-05-01T05:27:50.443 に答える