延迟时间的问题

时间:2015-04-06 17:33:48

标签: python tkinter

我试图将一些labels瘫痪一段时间而不是忘记它们。我尝试使用sleep()time.sleep(),但程序在我定义并执行行之后开始。这是我的计划的一部分:

from time import sleep
from tkinter import*
from tkinter import ttk
root = Tk()
root.geometry('700x700+400+100')
root.overrideredirect(1)
myFrame=Frame(root)
label1=Label(myFrame, text='Warning!', font=('Arial Black', '26'), fg='red')


myFrame.pack()
label1.pack()

sleep(10)



myFrame.pack_forget()
label1.pack_forget()

但是当我运行该程序时,它会等待10秒而不是执行这些行(framelabel已经打包并且立即忘记了。

我希望很清楚,我有什么问题。

1 个答案:

答案 0 :(得分:2)

使用Tkinter after方法代替time.sleep(),因为time.sleep()几乎不会在GUI中使用。 after计划在指定时间(以毫秒为单位)后调用的函数。你可以像这样实现它:

myFrame.after(10000, myFrame.pack_forget)
label1.after(10000,label1.pack_forget)

请注意,after不会 确保 功能将在恰当的时间发生,它只会将其安排在之后 >一定的时间。由于Tkinter是单线程的,如果您的应用程序繁忙,可能会有一个可以在几微秒内测量的延迟(最有可能)。