Salut,
Votre cible empile des cercle de couleurs 'black', 'blue', 'red', 'yellow'.
Après avoir exécuté canvas.bind('<Button-1>', on_click), le callback "on_click" sera appelé dès que l'utilisateur clique sur le Canvas.
Pour savoir sur quel item, l'utilisateur à cliqué, on peut utiliser le tag spécial 'current': canvas.find_withtag('current') retourne l'item sur lequel on a cliqué ou rien du tout. A partir de là, on peut récupérer sa "couleur" avec un canvas.itemcget(item, 'fill').
Côté code:
1 2 3 4 5
| def on_click(event):
items = canvas.find_withtag('current')
if len(items):
iid = items[0]
print (canvas.itemcget(iid, 'fill')) |
Et juste après la création du canvas ajouter:
canvas.bind('<Button-1>', on_click)
Si votre but est de faire "bouger" la cible à chaque coup, il sera plus simple de lui associer un tag: 'cible'. Ca donne:
1 2 3
| def cercle(x, y, r, coul):
"tracé d'un cercle de centre (x,y) et de rayon r"
canvas.create_oval(x-r, y-r, x+r, y+r, fill=coul, tag='cible') |
Ca permettra ensuite de faire bouger tous les items de la cible d'un seul coup.
Exemple: canvas.move('cible', dx, dy)
Bon courage,
- W
Partager