1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| # -------------------- Sans utiliser de fonction LAMDBA
from tkinter import *
import time
window = Tk()
window.geometry("480x360")
can1 = Canvas(window, bg='dark grey', height=330, width=440)
can1.pack(expand="YES")
ampoule1 = can1.create_oval(30, 30, 90, 90, width=4, fill='grey')
ampoule2 = can1.create_oval(30, 110, 90, 170, width=4, fill='grey')
can1.update()
def action(ampoule, couleur):
can1.itemconfigure(ampoule, fill=couleur)
"""
can1.after(1000, action(ampoule1, 'red')) # Ici after reçoit le résulat de la fonction action et dans ce cas NONE
can1.update() # Update nécéssaire
can1.after(1000, action(ampoule2, 'red')) # Ici after reçoit le résulat de la fonction action et dans ce cas NONE
"""
action(ampoule1, 'red')
can1.update()
time.sleep(1)
action(ampoule2, 'red')
can1.update()
window.mainloop()
# a=f Si l'objet f est une fonction a = f assigne l'objet f à la variable a
# a=f() exécute la fonction f et assigne le retour à a.
# un callback est un objet fonction et non le résultat de l'appel de la fonction.
# Ça s'applique dans tous les contexte et tout particulièrement celui d'after |
Partager