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
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
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)
C'est donc dans miseAjour(n,couleur) que je voudrais raffraichir ma fenetre, ou plutot uniquement le canvas correspondant au bouton cliqué.
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)
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)
Partager