begin process at 2010 09 04 13:45:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Python

 > 

Divers

 > 

Débutant(e)

 > 

récupération d'état de checkbox


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

récupération d'état de checkbox

vendredi 6 février 2009 à 11:15:42 | récupération d'état de checkbox

thibault7249

Bonjour
voila j'ai plusieurs "checkbutton"
 
<code>
i=0
j=0
valeurs = {}
value=True
while(i<36):
    value = IntVar();
    chk = Checkbutton(text= str(i), variable=value )
    chk.grid(row=(i-j*6)+5, column = j)
    valeurs[i]=value.get()
    print i
       
       
       
    i+=1
    if(i%6==0):
        j+=1
print valeurs
<\code>

le "print valeur" est là pour me montrer l'état du dictionnaire
j'aurais besoin de récupérer ce dictionnaire pour l'envoyer dans une autre fonction une fois les boutons cochés mais je ne vois pas comment faire ... pour cela j'en appelle à votre bonne volonté pour m'aider

je pensais d'abord mettre le code que j'ai mi plus haut dans une fonction avec un "return valeurs" ou alors déclarer "valeurs" en tant que variable globale mais ni l'une des solutions ni l'autre ne me semble correctes ...

je commence tout juste la programmation événementielle et je suis très débutant en interface graphique

D'avance merci
Cordialement
samedi 7 février 2009 à 13:37:28 | Re : récupération d'état de checkbox

lespinx

Re-bonjour thibault7249

Si j'ai bien compris, la question est : comment faire pour passer un dictionnaire dans un appel de fonction?

exemple
def test(dic_test):
    print "def ",dic_test,  id(dic_test)

dic_main = {"a":1,"b":2,"c":3}
print "main",dic_main,  id(dic_main)
test(dic_main)    #appel de la fonction

On indique le nom du dictionnaire dans les paramètres d'appel de la fonction.
Le print  "id" du dictionnaire est là pour montrer qu'en réalité on passe dans les paramètres de la fonction, la référence à l'objet et non pas le contenu de l'objet.

Cordialement

lundi 9 février 2009 à 09:46:34 | Re : récupération d'état de checkbox

thibault7249

Bon alors j'ai essayer de faire un truk comme ça :

def checkcheck():
    print i
    valeurs[i]=value.get()
   
###########################################################################################
###########################################################################################


i=0
tabchk=[]
global valeurs
valeurs = []
value=False
print "c'est cool bouton",value
while(i<36):
    value = IntVar();
    tabchk.append(Checkbutton(text= str(i), variable=value, command =checkcheck  ))
    valeurs.append(value.get())
    print i,valeurs       
       
    i+=1
print valeurs

i=0
j=0

for a in tabchk:
   
   
    a.grid(row = (i-j*6)+4,column = j)
    i+=1
    if i%6==0:
        j+=1


Le tableau s'initialise correctement mais dès qu'on coche une case il me sort une insulte du type " index out of range" sur la fonction checkcheck() et 36 juste avant ce qui correpond au "print i" de la fonction, donc je me dis que c'est normal qu'il m'insulte cet empafé vu qu'il va pas chercher au bon endroit ...

Mon problème : Comment je fais pour dire aux checkbutton quelle place il a dans le tableau  ? ou Comment je créé plusieurs checkbutton utilisables avec une boucle ?

J'ai l'impression que je fais nimporte quoi là en fait 


PS : Le gras n'est pas une pointe de narcicisme c'est juste pour différencier le code du texte ...

Cordialement
D'avance Merci

lundi 9 février 2009 à 10:41:14 | Re : récupération d'état de checkbox

thibault7249

Je viens de réécrire mon code en plus lisible et il ne me met plus de message d'erreur  :

###########################################################################################
###########################################################################################
def checkcheck():
   
    if checkButtonsValues[parametre]==0:
        checkButtonsValues[parametre]=1
    else:
        checkButtonsValues[parametre]=0

    print parametre,checkButtonsValues[parametre]
   
###########################################################################################
###########################################################################################
i=0


checkButtonsValues = {}
parametres = np.arange(0,36)
tabchk = []
for parametre in parametres:
    var = IntVar();
    chk = Checkbutton(text = parametre , variable = var, command = checkcheck)
    tabchk.append(chk)
    checkButtonsValues[parametre]= var
   
j=0
i=0
for a in tabchk:
   
   
    a.grid(row = (i-j*6)+4,column = j)
    i+=1
    if i%6==0:
        j+=1
###########################################################################################
###########################################################################################

Désolé je prend beaucoup de place à mettre mes lignes de code

Par contre je sais toujours pas comment modifier l'état de la case 17 par exemple ( je sais coché une case ) mais j'arrive pas à dire que c'est ELLE qui est cochée. Je sais pas si c'est compréhensible ...
lundi 9 février 2009 à 10:47:05 | Re : récupération d'état de checkbox

thibault7249

^^ pardon pour mon manque d'éducation
Bonjour lespinx
lundi 9 février 2009 à 15:48:35 | Re : récupération d'état de checkbox

thibault7249

Au secours !!!!!

J'en appelle à la solidarité des développeurs !
SVP
lundi 9 février 2009 à 21:31:22 | Re : récupération d'état de checkbox

lespinx

Réponse acceptée !
Bonsoir
Ci joint un code qui permet de lire et modifier l'état d'un Radio Bouton.

# -*- coding: ISO-8859-15 -*-
from Tkinter import *

def clic_radiobouton():
    #Traitement de l'évenement clic sur Radio Bouton

    #Lecture de l'état du Radion Bouton
    etat_radiobouton = var_Radio.get()

    #Ici on traite le cas du clic sur "B1" ==> faire un clic sur "B1"
    if etat_radiobouton == "B1":
        print "Vous avez cliqué le bouton",etat_radiobouton

    #Ici on modifie l'état du Radio Bouton "B5" (6eme Radio Bouton)
    #Il y a 6 Radio Boutons numérotés de 0 a 5
    Bouton_Radio[5].select()
    etat_radiobouton = var_Radio.get()
    print "Vous avez modifié l'état du bouton",etat_radiobouton

if __name__ == '__main__':

    AppliTK = Tk()
    #Création du bouton Radio
    Bouton_Radio = []
    var_Radio = StringVar()

    for element in [ "B0" , "B1" , "B2", "B3", "B4", "B5"]:
        rb = Radiobutton(AppliTK,
                        text = element,
                        value = element,
                        variable = var_Radio,
                        command = clic_radiobouton,
                        takefocus = False)
        Bouton_Radio.append(rb)      #rb = Identifiant interne

    #Placement des Boutons Radio
    for element in Bouton_Radio:
        element.pack(side = LEFT)

    #Activation du bouton Radio "B2"
    Bouton_Radio[2].select()


    AppliTK.mainloop()

En espérant avoir répondu à la question
mardi 10 février 2009 à 10:31:36 | Re : récupération d'état de checkbox

thibault7249

Merci mais en fait c'est des checkbuttons que je dois construire car j'ai plusieurs valeurs à transmettre

Là j'ai fait une classe dérivée de checkbutton

class CheckbuttonT(Checkbutton):
   
   
    def getText(self):
        print self['text']
   
  
    def __init__(self,master,_parametre,_variable):
        Checkbutton.__init__(self, master,text = _parametre,variable = _variable,command = self.getText)
       
Mais le souci c'est que quand je clic sur un, tous se cochent :
parametres = np.arange(0,36)
tabchk = []
var=0

for parametre in parametres:
    chk =CheckbuttonT.CheckbuttonT(fenetre_root,parametre , _variable = 0)
    tabchk.append(chk)  

j=0
i=0


for a in tabchk:
    a.grid(row = i-j*6+4,column = j)
    i+=1
    if i%6==0:
        j+=1


J'avoue que ça me rend fou 



mardi 10 février 2009 à 14:04:14 | Re : récupération d'état de checkbox

thibault7249

Réponse acceptée !
Bon et bien merci de ton aide lespinx ^^ j'ai fini par y arriver :

class CheckbuttonT(Checkbutton):
    etat = False
   
    def getText(self):
        if self.etat == False : self.etat = True
        else: self.etat = False
        print self['text'],self.etat
   
  
    def __init__(self,_parametre,_on ,_off):
        Checkbutton.__init__(self, text = _parametre,command = self.getText,onvalue = _on , offvalue = _off)
       
########################################################
parametres = np.arange(0,36)
global tabchk
tabchk = []
var=0
j=0
i=0
for parametre in parametres:
   
    tabchk.append(CheckbuttonT.CheckbuttonT(parametre ,1,0))  


for a in tabchk:
    a.grid(row = i-j*6+4,column = j)
    i+=1
    if i%6==0:
        j+=1
###########################################################
n=0
    dico_canal = {}
    while n < 36:
        print tabchk[n]['text'],tabchk[n].etat

        dico_canal[tabchk[n]['text'] ]= tabchk[n].etat
        n +=1


Si ça peut aider quelqu'un un jour
Bonne journée




jeudi 19 février 2009 à 06:41:34 | Re : récupération d'état de checkbox

Endoril

Bonjour,

oui effectivement, ca peut

Mais pourrais tu commenter ton code stp ?

Je cherche a faire un prog qui lance une appli ou une autre selon l'etat des boutons.
Par exemple appli1.exe quand loption est cochee aplli2.exe si elle ne l'est pas.

A partir de ce code on peut sans doute mettre ton dictionnaire sous forme d'un fichier.txt ?

Merci de ta (vos) réponses !

1 2

Cette discussion est classée dans : checkbox, valeurs, récupération, value, état


Répondre à ce message

Sujets en rapport avec ce message

Problème de calcul simple [ par vaggarath ] Bonjour bonjour. Voilà j'ai un problème tout c*n, j'en suis sur... En fait je fais un boutton qui procède à un calcul suivant les valeurs rentrées au récupération des données dans fichier odb [ par KoolCampos ] Slt, je suis un débutant dans la programmation avec Python. J'ai un problème. Au fait , j'ai lancé un calcul sous abaqus et j'ai le fichier de sortie


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,296 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales