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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| from Tkinter import *
def event1(event):
# On identifie le Canvas
c = event.widget
# On transforme les coordonnees de l'event en coordonnees du Canvas.
x = c.canvasx(event.x)
y = c.canvasy(event.y)
# On retrouve l'item au coordonnees x, y.
# Ici Canvas.find_closest retourne "1" puisque l'item est
# le premier cree.
item = c.find_closest(x, y)
# On regarde si "Off" est dans les tags de l'item.
if "Off" in c.gettags(item):
# Puisque c'est bon on cree la seconde image avec pour tag
# "Master_%s" % item, soit Master_1.
c.create_image(200, 150, image=Bouton2, tag="Master_%s" % item)
# On change l'image du premier item
c.itemconfig(item, image=Bouton1r)
# Et on lui supprime le tag "Off"
c.dtag(item, "Off")
else:
# Ici le tag "Off" n'est pas dans les tags de l'item.
# On supprime l'image ayant pour tag "Master_1"
c.delete(c.find_withtag("Master_%s" % item))
# On change l'image de l'item
c.itemconfig(item, image=Bouton1)
# Et on rajoute le tag "Off"
c.addtag("Off", "withtag", item)
root = Tk()
root.title('Fenetre test')
Bouton1 = PhotoImage(file="Images/Bouton1.gif")
Bouton1r = PhotoImage(file="Images/bouton1r.gif")
Bouton2 = PhotoImage(file="Images/Bouton2.gif")
CanvasPrincipal = Canvas(root, width=400, height=200)
CanvasPrincipal.pack()
# On cree la premiere image et l'on recupere son id,
# identifiant unique pour l'item dans le Canvas,
# dans la variable cvid. C'est ici "1" puisque c'est le premier item.
# Le tag "Off" vas servir d'indicateur pour savoir si la seconde image
# a ete cree.
cvid = CanvasPrincipal.create_image(200, 50, image=Bouton1, tag="Off")
# tag_bind de l'item.
# Vous remarquerez que le tag utilise ici est l'id de l'item.
CanvasPrincipal.tag_bind(cvid, "<Button-1>", event1)
root.mainloop() |
Partager