Home > front end >  How to add a time delay to a button in Tkinter?
How to add a time delay to a button in Tkinter?

Time:12-25

first of all I would like to point out that I am new to tkinter and coding in general, so sorry if I make big mistakes. I am trying to make an image appear for a brief amount of time after I have clicked on a button, so I want to add a delay between the creation of the image and its deletion. This is the code:

fenetre=Tk()

Cadre1=Frame(fenetre, borderwidth=2,)
Cadre1.pack(side=RIGHT)
Cadre2=Frame(fenetre, borderwidth=2,)
Cadre2.pack(side=LEFT)

def rond():
    étoile=canvas.create_polygon(480,270,500,260,510,240,520,260,540,270,520,280,510,300,500,280)
    canvas.after(1000, canvas.delete(étoile))
    

canvas = Canvas(Cadre1, width=1500, height=1080, background='yellow')
canvas.pack()

bouton=Button(Cadre2,text='Attaque',command=rond ,relief=RAISED)
bouton.pack()

fenetre.mainloop()

The main problem I am encountering is in the "rond()" function. I have tried time.sleep and master.after but they all seem to simply extend the time where I can't click on the button instead of delaying the two parts of the function. I think that I do not quite understand how these functions work but I don't know what to change.

Thanks in advance for your answers

CodePudding user response:

This will do the trick. the after function expects a function as parameter that is why I am using lambda function

def rond():
    print('Command accessed')
    etoile=canvas.create_polygon(480,270,500,260,510,240,520,260,540,270,520,280,510,300,500,280)
    canvas.after(2000, lambda: canvas.delete(etoile))
  • Related