Как я могу сделать так, чтобы метка с сообщением появлялась в течение нескольких секунд, а затем метка удалялась?

#python #python-3.x #label

Вопрос:

Я хочу сделать кнопку так, чтобы появлялась метка с небольшим сообщением, а через некоторое время сообщение удалялось. Я пытался сделать это с помощью time.sleep () внутри def, который активируется другим def, но у меня это не работает, потому что сообщение появляется через несколько секунд, пока кнопка остается нажатой, а метка не удалена, вы можете помочь мне это исправить? 🙁

 def salir():
    if trad["text"]!="ar.ab.iz.":
        #msg.showinfo("No","Ese no era el camino...")
        
        trad.config(text=leta)
        noes()

    else:
        codigo=tk.Toplevel(ventana)
        codigo.title("Salida")
        codigo.geometry("200x200")
        Label(codigo, text ="Encontré algo...").pack()
        caja = tk.Entry(codigo,textvariable="")
        caja.place(x=100,y=150)
        canvas.delete(ima)
        posx2 = 247
        posy2 = 100
        ima2 = canvas.create_image(247,780,image=myimg)
        trad.config(text=leta)
        new_windw=tk.Toplevel()

def noes():
    no=tk.Label(ventana, text ="Ese no era el camino...",font=("Verdana",20),bg="#148870", fg="white")
    no.place(relx = 0.5,rely = 0.4,anchor ='s')
    time.sleep(3)
    widget.forget()

boton2 = tk.Button(text="  Ir  ",font=("Verdana",16), command=salir)
boton2.config(bg="#135C3F", fg="#D7D731")
boton2.place(x=746,y=379)

 

Ответ №1:

Ну, я обнаружил, что команда, вызванная после этого, проще в использовании.

root.после (2000, метка.уничтожить)

«корень» (это имя окна, в которое вы помещаете метку), «2000» — это время, эквивалентное 2 секундам, «метка» — это метка, которую вы хотите создать, и «уничтожить» уничтожает ее.

 def button_pressed():
    label = tk.Label(root, text="Hello World!")
    label.pack()
    root.after(2000, label.destroy)


root = tk.Tk()

button = tk.Button(root, text="Press Button", command=button_pressed)
button.pack()

root.mainloop()