[Python] Recupérer valeur checkbutton

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour
Ca faisait bien une semaine que je n'avais posé de questions, mais là j'y arrive pas....
Voilà mon code
i = 0
for t in self.param_inputs:
value = Tkinter.IntVar();
checkbox = Tkinter.Checkbutton(group_input.interior(), text = t, variable = value, command = self.checkbutton_input)
self.checkButtonsInputsValues = value
checkbox.grid(column = 1, row = i)
i += 1

Le principe est de créer autant de checkbutton qu'il y a de paramètres dans ma liste 'self.param_inputs'.
Les différents checkbuttons sont bien créés avec le nom du paramètre qu'il faut, mais quand je séléctionne un paramètre et que j'appelle la fonction 'self.checkbutton_input', j'affiche 'self.checkButtonsInputsValues'. Le problème est que cette valeur est toujours la même (celle créée pour le dernier checkbutton).
Comment puis-je avoir des valeurs différentes pour tous mes paramètres?
Merci
A voir également:

4 réponses

sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
Oui, le message est le même.
Mais dans ta méthode checkbutton_input, tu peux parcourir la liste des boutons pour voir lesquel sont cochés ou non.
1
Utilisateur anonyme
 
Ben je ne sais pas ce que j'ai changé, mais effectivement, maintenant j'arrive à récupérer la valeur des boutons.
Un grand merci.
0
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
Ben je ne sais pas ce que j'ai changé

tu peux mémoriser les valeurs et comparer anciennes/nouvelles pour voir ce qui a changé :-)
0
Utilisateur anonyme
 
Oui c'est bon merci.
Je stocke toutes mes valeurs dans un dictionnaire.
Merci
0
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
le problème est que cette valeur est toujours la même (celle créée pour le dernier checkbutton).

Stock tout simplement les différentes valeurs dans un tableau !

Avant la boucle for: self.checkButtonsInputsValues = []

puis dans ta boucle:
self.checkButtonsInputsValues.append(value)


Après, tu pourra accéder à la valeur de chaque checkbutton avec self.checkButtonsInputsValues[7].get() par exemple.
-1
Utilisateur anonyme
 
Je l'ai déjà fait ça ne change pas rien.
Parce que mon problème vient du fait que lorsque j'appelle ma fonction
'self.checkbutton_input()', je ne sais pas quel checkbutton est coché.
J'aimerais que la fonction me renvoie directement le nom du bouton que je viens de cocher.
C'est ça que je n'arrive pas à faire.
0
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
je ne sais pas quel checkbutton est coché.

Dans ce cas, stock dans self.checkButtonsInputsValues sous forme d'un dictionnaire.

self.checkButtonsInputsValues = {}

puis:

self.checkButtonsInputsValues[t] = value


Comme ça tu pourra savoir quelle case est cochée et quelle case ne l'est pas.

Exemple:
for (param,checkbutton) i in self.checkButtonsInputsValue.items():
    print "Le bouton ",param," a comme valeur ", checkbutton.get()
-1
Utilisateur anonyme
 
Bon décidément je ne vois pas.
Que je clique sur l'un ou l'autre de mes boutons, le message renvoyé est le même :
"[('vb', <Tkinter.IntVar instance at 0xb608c92c>), ('vc', <Tkinter.IntVar instance at 0xb608ca8c>), ('vs', <Tkinter.IntVar instance at 0xb608cb0c>), ('ve', <Tkinter.IntVar instance at 0xb608ca0c>)]"
En aucun cas, je peux savoir quel(s) est(sont) le(s) bouton(s) coché(s).
0