[Python] checkbuttons.add()

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour
J'ai un (très léger) souci avec la command checkbuttons.add().
Quand je fais ça :
for t in list_param_output :
self.checkbuttons.add(t)
Il me retourne l'erreur suivante:
"ValueError: Component name "S_deemb" must not contain "_"
Comment puis-je passer au travers de cette erreur?
Merci

11 réponses

  1. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    Je ne connais pas le nombre de case à cocher

    Pas de problème, tu peux les créer dynamiquement et les stocker dans une liste.

    à quoi correspond le terme "variable = v"?

    Ah pardon, erreur:
    self.valeurCheckbutton = Tkinter.IntVar(); 
    checkbox = Tkinter.Checkbutton(parent,text="Blablabla",variable=self.valeurCheckbutton)
    checkbox.grid(column=0,row=2)
    0
  2. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    Elle contient quoi comme object ta liste list_param_output ?
    0
    1. Utilisateur anonyme
       
      Ca dépend du fichier choisi au départ, mais dans ce cas-là :
      ['ic', 'ib', 'S_deemb']
      0
  3. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    Je vois... le message d'erreur est explicite:
    "Component name "S_deemb" must not contain "_" "

    Autrement dit, tu n'a pas le droit d'utiliser un underscore "_" dans les identifiants de composants.
    0
    1. Utilisateur anonyme
       
      Ouais je m'en doutais mais je ne peux pas utiliser autre chose ou forcer l'écriture des paramètres, quelque chose comme ça?
      0
  4. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    Ce sont des cases à cocher que tu utilises ?

    mmm... je ne comprend pas bien comment tu construit des cases à cocher.

    Moi je fais comme ça:

    self.valeurCheckbutton = Tkinter.IntVar(); 
    checkbox = Tkinter.Checkbutton(parent,text="Blablabla",variable=v)
    checkbox.grid(column=0,row=2)


    C'est dans le text="Blabla" que je définis le texte qui doit s'afficher à côté de la base à cocher.

    self.valeurCheckbutton me sert à lire l'état de la case (cochée ou pas):

    if self.valeurCheckbutton.get()!=0: print "Case cochée !"
    0
    1. Utilisateur anonyme
       
      Ben en fait au départ, je ne connais pas le nombre de case à cocher que je dois créer. Il dépend du nombre de paramètres contenus dans "list_param_input".
      Pour chaque paramètre de cette liste, je créé une case à cocher qui porte le nom du paramètre.
      Dans le code que tu m'as donné, à quoi correspond le terme "variable = v"?
      0
    2. Utilisateur anonyme
       
      En fait je viens de me rendre compte que j'utilisais non pas la fonction Tkinter.Checkbutton, mais Pmw.RadioSelect.
      Et effectivement, la fonction .add() ne s'applique pas aux checkbuttons.
      Y'a une grande différence entre ces deux façons de faire?
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    Pmw.RadioSelect

    Je ne l'ai jamais utilisé. Il faut regarder la doc pour voir comment il s'utilise.
    0
  7. Utilisateur anonyme
     
    Salut
    Seb, quand tu dis qu'on peut les créer dynamiquement, ça veut dire quoi?
    Car ce que je faisais moi, c'était qu'à chaque fois que je rencontrais un nouveau paramètre dans ma liste, j'ajoutais un nouvelle "RadioSelect" avec l'option .add() et le nom de mon nouveau paramètre. Mais avec Checkbutton, ça ne marce pas. L'attribut .add() n'est pas supporté par CheckButton.
    0
  8. Utilisateur anonyme
     
    C'est bon merci.
    Le matin c'est toujours un peu dur.....
    0
  9. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    C'est normal: checkbutton n'a pas de méthode add.

    Que veux tu faire exactement ?

    En principe, ajouter le bouton que tu viens de créer à ta liste.

    Donc il faut appliquer la méthode .add sur ta liste, par sur le checkbutton.

    maliste.add(moncheckbutton)

    En l'occurence, pour ajouter un élément à une liste, c'est .append(), pas .add()
    0
    1. Utilisateur anonyme
       
      Salut seb
      ce que je veux faire, c'est parcourir une liste de paramètres, et ajouter un nouveau checkbutton qui porte le nom de mon nouveau paramètre.
      0
  10. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    ce que je veux faire, c'est parcourir une liste de paramètres, et ajouter un nouveau checkbutton qui porte le nom de mon nouveau paramètre.

    J'avais compris.

    Le principe est de faire une boucle sur tes paramètres, et de créer un checkbutton pour chaque paramètre.

    self.checkButtonsValues = {}
    parametres = ['ga','bu','zo','meuh']
    
    for parametre in parametres:
        v = Tkinter.IntVar(); 
        checkbox = Tkinter.Checkbutton(parent,text=parametre ,variable=v)
        self.checkButtonsValues[parametre] = v
    


    Ensuite tu peux accéder à la valeur d'un checkbutton:
    print self.checkButtonsValues['zo'].get()


    Tu as suivi des cours d'algorithmie ?
    0
    1. Utilisateur anonyme
       
      euh non jamais....
      pourquoi, ça serait bien?
      0
  11. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    Je crois oui, parceque là tu te pose des questions existentielles sur la création de plusieurs checkbox, alors que ça se résoud avec des notions d'algo.
    Et ça t'aidera à résoudre des tas d'autres problèmes (boucle imbriquées, branchements conditionnels, etc.)
    0
    1. Utilisateur anonyme
       
      Pour tout dire, j'ai jamais vraiment suivi de cours de programmation.
      C'est pour ça qu'il me manque la logique.
      0