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

amaury74 24 Messages postés vendredi 10 août 2007Date d'inscription 10 mai 2009 Dernière intervention - 22 mai 2008 à 16:46 - Dernière réponse : amaury74 24 Messages postés vendredi 10 août 2007Date d'inscription 10 mai 2009 Dernière intervention
- 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 

3 réponses

Répondre au sujet
0x586e 1 Messages postés jeudi 29 novembre 2007Date d'inscription 16 septembre 2008 Dernière intervention - 17 juin 2008 à 16:18
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de 0x586e
amaury74 24 Messages postés vendredi 10 août 2007Date d'inscription 10 mai 2009 Dernière intervention - 24 mai 2008 à 12:41
0
Utile
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
amaury74 24 Messages postés vendredi 10 août 2007Date d'inscription 10 mai 2009 Dernière intervention - 19 nov. 2008 à 21:03
0
Utile
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.