Récupérer la valeur choisie dans une liste déroulante [Résolu]

Messages postés
24
Date d'inscription
vendredi 10 août 2007
Dernière intervention
10 mai 2009
- - Dernière réponse : amaury74
Messages postés
24
Date d'inscription
vendredi 10 août 2007
Dernière intervention
10 mai 2009
- 19 nov. 2008 à 21:03
Bonjours à tous,
Ma question peu paraitre bête mais je n'ai pas trouvé de réponse claire.
Voila: j'ai programmé une interface graphique avec wx.Python. Elle comporte plusieurs listes déroulantes (widget wx.Choice).
J'aimerai simplement récupérer la valeur que va choisir l'utilisateur dans la liste.

Voici un morceau de mon code:

[cpp]choix = [ '% CPU1' , '% CPU2', '% RAM' , "% GPU" , '%HDD' , "T cpu (°C)" , "T gpu (°C)" , "V ventilateur CPU (%)" , "V ventilateur GPU (%)" ]
        port = [ 'LPT 1' , 'USB', 'RS232' ]
        power = [ 'ON' , 'OFF' ]
       
        self.choix1 = wx.Choice(self,-1,choices=choix)
        sizer.Add (self.choix1, (2,2), (1,1))
                             
        self.choix2 = wx.Choice(self,-1,choices=choix)
        sizer.Add (self.choix2, (8,2), (1,1))
               
        self.choix3 = wx.Choice(self,-1,choices=choix)
        sizer.Add (self.choix3, (2,6), (1,1))
               
        self.choix4 = wx.Choice(self,-1,choices=choix)
        sizer.Add (self.choix4, (8,6), (1,1))

        self.choix5 = wx.Choice(self,-1,choices=port)
        sizer.Add (self.choix5, (13,2), (1,1))

        self.choix6 = wx.Choice(self,-1,choices=power)
        sizer.Add (self.choix6, (13,6), (1,1))/cpp
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
1
Date d'inscription
jeudi 29 novembre 2007
Dernière intervention
16 septembre 2008
3
Merci
Bonjour.

    def OnChoix1(self,evt):
        a=(evt.GetEventObject().GetLabel())
    def OnSave(self,evt):
        print a

a est une variable local de OnChoix1 la dedans, non ?

essaies de faire :

...     def OnChoix1(self,evt):
...             self.a='test'
...     def OnSave(self,evt):
...             print self.a
...
(mon test)
>>> boo = test(); boo.OnChoix1(); boo.OnSave()
test

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de 0x586e
Messages postés
24
Date d'inscription
vendredi 10 août 2007
Dernière intervention
10 mai 2009
0
Merci
J'ai trouvé le moyen de récupérer les valeurs sélectionnées en utilisant ces commandes:
   
    self.Bind(wx.EVT_CHOICE,self.OnChoix1, self.choix1)
    def OnChoix1(self,evt):
        obFichier = open('config','a')
        obFichier.write (evt.GetEventObject().GetLabel())
        obFichier.write ("\n")
        obFichier.close()

Les valeurs sont ainsi inscrites dans un fichier texte. Le problème est qu'en cas de modifications répétées de la valeur, elles se retrouvent toutes dans le fichier texte...
La solution serait donc d'affecter la valeur retournée à une variable et ensuite d'incrire la valeur de la variable.
J'ai donv penser à ce code:

    def OnChoix1(self,evt):
        a=(evt.GetEventObject().GetLabel())
    def OnSave(self,evt):
        print a

Le shell me retourne alors cette erreur:
Traceback (most recent call last):
  File "F:\prog monitoring\Configurateur.py", line 261, in OnSave
    print a                        
NameError: global name 'a' is not defined.

Comment puis-je résoudre cette erreur?

   
Commenter la réponse de amaury74
Messages postés
24
Date d'inscription
vendredi 10 août 2007
Dernière intervention
10 mai 2009
0
Merci
A, c'est possible, désolé de mon étourderie et de mon retard pour répondre
Commenter la réponse de amaury74

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.