[Python] Recupérer valeur checkbutton

Résolu
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

4 réponses

  1. Modérateur
    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
    1. 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
  2. Modérateur
    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
    1. 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
  3. Modérateur
    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
    1. 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
  4. Modérateur
    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
    1. Oui c'est bon merci.
      Je stocke toutes mes valeurs dans un dictionnaire.
      Merci
      0