Tkinter: créer des boutons dans une boucle

Bonjour,
J’aimerai utiliser une boucle pour créer une vingtaine de boutons similaires situés chacun dans un canvas différent et executant une commande différente voilà mon code associé:

		def Ecouter(num_poste):
			if ve[num_poste].get() == 1:					
				self.caskp1=self.canvas_image[num_poste].create_image(2,2, image=cask, anchor='nw')
			else:
				self.canvas_image[num_poste].delete(self.caskp1)

		buttonE=[None]
		i=1
		while(i<3):
			buttonE.append(Tkinter.Checkbutton(self.canvasp[i],image=self.caskN, variable = ve[i],command=lambda:Ecouter(i),indicatoron=0))	
			buttonE[i].place(x=0,y=2)
			i=i+1

Pour l’instant je ne crée que deux boutons, ils sont bien créés à la bonne place avec la bonne image, il n’y a donc pas de problème avec le remplissage de la liste buttonE.

Par contre lorsque je clique dessus il ne se passe strictement rien…

Alors que si je crée le bouton à la main:

		buttonE1 = Tkinter.Checkbutton(self.canvasp[1],image=self.caskN, variable = ve[1],command=lambda:Ecouter(1),indicatoron=0)
		buttonE1.place(x=0,y=2)

Tout fonctionne bien…

Une idée?
Merci

Hum le problème vient de la variable i

si je mets while(i<3)

Ecouter(i)

Il me lance Ecouter(3) quelque soit la situation, je ne vois pas comment faire… Je vais les écrire à la main pour avancer mais si quelqu’un a une idée je suis preneur!

Merci

Je crois que la solution est expliqué ici mais je ne suis pas assez fort en anglais et assez calé pour tout comprendre…

Je me trompe?

Mouarf… Je ne suis pas très doué en anglais mais quand même il suffisait de faire un petit effort, la solution est de rajouter:

command= lambda i=i: maCommande(i)

ça marche nickel :slight_smile: