[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

sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
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)
1
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
Elle contient quoi comme object ta liste list_param_output ?
0
Utilisateur anonyme
 
Ca dépend du fichier choisi au départ, mais dans ce cas-là :
['ic', 'ib', 'S_deemb']
0
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
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
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
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
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
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

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

Je ne l'ai jamais utilisé. Il faut regarder la doc pour voir comment il s'utilise.
0
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
Utilisateur anonyme
 
C'est bon merci.
Le matin c'est toujours un peu dur.....
0
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
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
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
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
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
Utilisateur anonyme
 
euh non jamais....
pourquoi, ça serait bien?
0
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
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
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
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
ok.

Quelques liens si ça peut aider:
https://forums.commentcamarche.net/forum/affich-409073-euh-je-debute-alors#16

ainsi que:
http://www.commentcamarche.net/ccmdoc/index.php3?cat=93
0
Utilisateur anonyme
 
je te remercie
je vais voir si je trouve des trucs intéressants
0