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

你真的应该使用 Tkinter after 方法而不是time.sleep(...).

在另一个 stackoverflow question中有一个使用 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 回答