python - 延迟时间的问题

标签 python tkinter

我试图在确切的时间内显示一些标签,而不是忘记它们。我尝试使用 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 已打包,然后立即忘记)。

我希望大家清楚我遇到了什么问题。

最佳答案

使用 Tkinter after方法而不是 time.sleep(),因为 time.sleep() 几乎不应该在 GUI 中使用。 after 安排在指定时间(以毫秒为单位)之后调用函数。你可以这样实现:

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

请注意,after 并不能确保某个函数会在正确的时间发生,它只是将其安排在之后发生 一定的时间。由于 Tkinter 是单线程的,如果您的应用程序繁忙,可能会出现以微秒为单位的延迟(很可能)。

关于python - 延迟时间的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29476331/

相关文章:

python - 如何在 pandas 中将 N/A (NaT) 转换为 0

python - Pandas 根据索引对列值进行分箱

python - 在类中为 Canvas 编写 tkinter 滚动条

python 如何从其他类访问变量

python - 使用 OpenCV 读取图像并使用 Tkinter 显示它

python - 如何在 Python 中使用位图 header ?

python - Tkinter 和线程 - 异常 : out of stack space (infinite loop? )

Python - 将包含 tkinter 小部件的框架传递到类中

python - 当我单击按钮时,打开新表格并写一些东西

python - Tkinter Canvas 存储的项目被清除和召回