Bonjour,
Le problème vient du fait que la méthode .bind() permet ici de paramétrer l'action à effectuer lors d'un clic de souris.
canvas.bind("<Button-1>", Clic)
Cette instruction ordonne au programme d'utiliser la fonction Clic lors d'un clic de souris.
1 2 3
| for i in range(3,7,1):
p=i
canvas.bind("<Button-1>", Clic) |
Cette boucle s'effectue avant que l'utilisateur n'ait pu effectuer le moindre clic et ainsi lorsque celui-ci appuiera sur le bouton de sa souris, la variable p aura pour valeur 6 (ce qui correspond bien à la fin de la boucle) et ainsi ce sera ce paramètre qui sera utilisé lors de l'appel de la fonction Clic :
canvas.create_image(40,40,image=im(p))
Pour corriger ce problème, vous pourriez par exemple insérer une boucle for dans la fonction Clic et non à l'extérieur de celle-ci. Cela permettra d'afficher successivement les image de la première à la sixième (il est possible d'utiliser le module time par exemple afin de mettre un délai entre chaque image pour que l'utilisateur puisse visualiser chaque image).
Je vous laisse donc chercher par vous-même car la solution n'est pas très compliquée.
Cependant, comme le souligne wiztricks :
Pour programmer avec tkinter, il faut déjà avoir acquis un peu les bases de la programmation, sinon çà décoiffe vite.
je vous conseille de vous pencher davantage sur toutes les possibilités qu'offrent Tkinter avant de continuer car vous risquez d'être rapidement bloqué, ce module étant particulièrement vaste et difficile à utiliser.
N'hésitez pas à partager votre code corrigé si vous avez besoins d'autres conseils...
~ OI0I0I0I0IO ~
Partager