Première fois que j'utilise un forum, si je n'écris pas au bon endroit corriger moi (sans m'insulter se serait gentil ).
Voila mon problème :
Je souhaite créer un programme utilisant une liste de noms d'élèves et qu'il me crée un bouton par nom d'élève et que quand on clique sur celui-ci, il lance une fonction qui va ajouter 1 point au compteur de l'élève. Petit bémol : lorsque je clique sur n'importe quel bouton, il ajoute un point au dernier élève de la liste et cela devient vite problématique... Pourtant, les boutons crées par la boucle on pour commande : command:lambda: add_point(student)
la fonction add_point():
le dictionnaire :
Merci de me répondre si vous avez une idée (ou la moindre piste je désespère ) Cordialement
Place ton code Python non pas avec des copies d'écran mais dans les balises du forum prévues à cet effet.
Tu rencontres un problème relativement courant, plusieurs approches sont possibles mais vu ce que tu as écrit, le plus simple est d'utiliser l'astuce des paramètres nommés student=student comme expliqué dans cet ancien message (ligne 59).
- Edité par PascalOrtiz 21 janvier 2020 à 21:20:19
je m'excuse pour les screens je ne savais pas et malheureusement la méthode que tu me décrit je suis allé la voir et j'ai tenté de l' appliquer à mon programme mais dans ma boucle for, student n'est pas un entier mais une chaîne de caractère et utiliser la commande index n'est pas possible vu que les noms des élèves sont stockés dans un dictionnaire et que celui-ci ne fonctionne pas avec des index. J'ai réussi à contourner le problème d'index en créant une liste temporaire stockant les noms d'étudiants pour les réutiliser, mais cela ne résout pas mon problème car les boutons pour je-ne-sais-quelle raison ont tous le même argument dans la fonction de la commande pourtant leur texte possède la même variable mais celui-ci affiche correctement des noms différents :
Cette astuce fait que ta fonction de rappel du bouton courant dispose du student courant (à cause du paramètre par défaut) et non pas du dernier déclaré lorsque l'astuce n'est pas utilisée.
Il est difficile de te donner une réponse précise puisque tu ne donnes qu'une partie du code. Si ça ne marche pas, le mieux serait que tu postes un code complet et aussi simplifié que possible et présentant le problème.
Merci pour ton aide qui m'a été précieuse, ta solution était effectivement la bonne.
Problème avec les Boutons de TKinter & les boucles
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Découverte Python Doc Tkinter Les chaînes de caractères
Découverte Python Doc Tkinter Les chaînes de caractères