我试图将一些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秒而不是执行这些行(frame
和label
已经打包并且立即忘记了。
我希望很清楚,我有什么问题。
答案 0 :(得分:2)
使用Tkinter after
方法代替time.sleep()
,因为time.sleep()
几乎不会在GUI中使用。 after
计划在指定时间(以毫秒为单位)后调用的函数。你可以像这样实现它:
myFrame.after(10000, myFrame.pack_forget)
label1.after(10000,label1.pack_forget)
请注意,after
不会 确保 功能将在恰当的时间发生,它只会将其安排在之后 >一定的时间。由于Tkinter是单线程的,如果您的应用程序繁忙,可能会有一个可以在几微秒内测量的延迟(最有可能)。