Bonjour

je créer des frames dans une boucle, qui contiennent chacune un canvas et un bouton.
Le canvas contient un cercle (vert ou rouge)
j'aimerais que lorsqu'on clique sur le bouton le cercle change de couleur, mais je n'arrive pas a raffraichir la trame car j'ai l'impression que je n'y ai pas acces.

Voila comment je fabrique mes frames
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
fint = [0]*6	
	#Création de 6 frames qui seront toutes dans f2 et contiendrons chacune un canvas et un bouton						
	for (n, txt, coul) in  prog_badge(nouveau, prog):
		#construction de la frame n qui se trouve dans la frame f2
		fint[n] = Frame(f2, relief =RAISED, bd=3)
		#declaration du canvas qui contient le cercle
		canvas = tk.Canvas(fint[n], width=30, height=30, borderwidth=0, highlightthickness=0, bg="grey80")
		canvas.grid(row=0,column=0)	#Affichage du canvas à gauche de la frame fint
		#fabrication du cercle et on le met dans le canvas
		canvas.create_circle(15, 15, 10, fill=coul, outline="blue", width=1)
		#fabrication du bouton puis on le place a droite de la frame fint
		e = Button(fint[n], text =txt, width =20,font=('arial', 20), bg ='grey80',
			command= lambda x=n, c=coul:change_couleur(x, c, prog)).grid(row=0,column=3)	#Sur click on change la couleur du canvas
		#Affichage de la frame fint	
		fint[n].pack(side =TOP, padx =10, pady =8, fill=X)
La couleur est changé dans un tableau qui contient les couleurs de chaque cercle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
#n est le numéro de la frame (commence par 0
#couleur est la couleur actuelle du cercle correspondant a la frame n
#prog est un tableau contenant les couleurs de chaque frame
#exemple prog=['green','red','green','red','green','red']
def change_couleur(n, couleur, prog):
	if couleur == 'green':
		prog[n]= 'red'
 
	elif couleur =='red':
		prog[n]='green'
	miseAjour(n, couleur)
C'est donc dans miseAjour(n,couleur) que je voudrais raffraichir ma fenetre, ou plutot uniquement le canvas correspondant au bouton cliqué.

Le probleme est que je n'ai pas acces (ou pas trouvé comment faire) à mes widgets canvas n'y au frames fint(n)

Une piste de recherche m'aiderai, car cela fait 2 jours que je suis dessus sans succes

Merci d'avance
Gilles

PS: excusez mon code s'il n'est pas parfait mais je débute (je suis preneur de toutes infos)