Bonjour,
Je découvre python et tkinter.
J’essaye de créer une application de gestion de devoirs pour un professeur.
A un moment du code, je créé des boutons correspondant aux classes qu’a ce professeur grâce à une boucle for.
Les boutons ont une couleur de background qui correspond à la couleur choisit par le professeur pour cette classe. (Exemple pour les 6eme il aura choisi le rouge)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 def creationBoutonClasse(): listeClasse = mesCoursClasses.MesClasses.chargerClasse() nbClasse = -1 if listeClasse == []: self.bouton_no_classe = tkinter.Button(self.frame_saisie_bouton_classe, text = "Vous n'avez pas encore créé de classe ! Cliquez ici pour le faire.") self.bouton_no_classe.bind('<Button-1>', affichageFrameGestion) self.bouton_no_classe.grid(row=0, column=0, pady=5, padx=5) else: for item in listeClasse: nbClasse += 1 self.nouveau_Bouton = tkinter.Button(self.frame_saisie_bouton_classe, text = item.nomClasse, background = item.couleurClasse, height = 3, width=6, command=classeDevoir(item)) self.nouveau_Bouton.grid(row=0, column=nbClasse, pady=5, padx=5)
Ces boutons apparaissent et ont même la couleur de fond qui correspond à la classe.
Par contre, il faut que, lors d’un clic sur ces boutons, quelque chose se passe.
Si je mets dans la boucle qui créée les boutons « command = classeDevoir(item)»
Et bien le code appelle cette méthode dès qu’il créé le bouton.
Alors que moi j’aimerai que cette méthode ne soit appelée que sur le clic.
J’ai essayé toujours dans cette boucle d’utiliser plutôt un self.nouveauBouton.bind(‘<button-1>’, classeDevoir(item))
Mais même résultat, la méthode est appelée lors de la création du bouton et pas lors d’un clic.
La méthode classeDevoir(item) est la suivante :
J’ai essayé de gérer le clic en dehors de la boucle mais je ne sais pas comment récupérer les boutons créés dedans.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 def classeDevoir(item): self.frame_saisie_devoir.config(text = "Votre devoir pour les " + item.nomClasse, background = item.couleurClasse)
Et même de cette manière comment les différenciés puisqu’ils ont le même nom ?
Partager