tkinter 和 time.sleep

Posted

技术标签:

【中文标题】tkinter 和 time.sleep【英文标题】:tkinter and time.sleep 【发布时间】:2012-05-10 18:07:06 【问题描述】:

我试图在等待 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()

【问题讨论】:

【参考方案1】:

您确实应该使用 Tkinter after method 而不是 time.sleep(...)

other *** 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()

【讨论】:

以上是关于tkinter 和 time.sleep的主要内容,如果未能解决你的问题,请参考以下文章

tkinter学习01

python GUI(Tkinter)

简单的 Qt 小部件来绘制线条和形状(如 tkinter 画布)?

Tkinter 中的类和样式

tkinter、python 和 seaborn 的问题:_tkinter.TclError: no display name and no $DISPLAY environment variable

线程和 tkinter