2011-09-28 3 views
1

Je travaille à concevoir une interface utilisateur graphique en utilisant wxpython, un pecie de mon code est que j'ai une classe qui a FRAMEnregistrer la valeur sélectionnée d'un combobox dans wxpython

déclaration et aussi je déclare que je veux les variables Chage leurs valeurs basées sur les comboboxes

sélection. je l'ai fait l'folowing:

class myMenu(wx.Frame): 
def __init__(self, parent, id, title): 
    wx.Frame.__init__(self, parent, id, title, size=(900, 700)) 

    self.ct = 0 
    self.phaseSelection = "" 
    self.opSelection = "" 
    self.instSelection = "" 
    self.orgSelection = "" 

    panel = wx.Panel(self, -1)  
    panel.SetBackgroundColour('#4f3856') 

    phasesList = ["preOperations", "inOperations", "postOperations"] 

    self.cbPhases = wx.ComboBox(panel, 500, 'Phase', (50, 150), (160,-1), phasesList, wx.CB_DROPDOWN) 

    self.Bind(wx.EVT_COMBOBOX, self.OnPhaseSelection, id = self.cbPhases.GetId()) 

ce qui est le code de l'événement « OnPhaseSelection »:

def OnPhaseSelection(self, event): 
    self.phaseSelection = self.cbPhases.GetValue() 

où je veux enregistrer la valeur sélectionnée dans la variable « self.phaseSelection » que je l'a déclaré avec un

chaîne vide comme valeur initiale, alors je veux utiliser cette variable avec la nouvelle valeur enregistrée, mais quand je lance

le programme, la variable contient la définition valeur de la combobox! alors s'il vous plaît quel est le problème dans

mon travail?

Répondre

3

Je ne suis pas sûr de ce qui ne va pas avec ça. On dirait que ça devrait marcher. J'ai copié la plupart de celui-ci et l'ai mis dans un exemple exécutable qui fonctionne sous Windows:

import wx 

######################################################################## 
class MyForm(wx.Frame): 

    #---------------------------------------------------------------------- 
    def __init__(self): 
     wx.Frame.__init__(self, None, wx.ID_ANY, "Tutorial") 
     panel = wx.Panel(self, wx.ID_ANY) 

     self.ct = 0 
     self.phaseSelection = "" 
     self.opSelection = "" 
     self.instSelection = "" 
     self.orgSelection = "" 

     phasesList = ["preOperations", "inOperations", "postOperations"] 

     self.combo = wx.ComboBox(panel, choices=phasesList) 
     self.combo.Bind(wx.EVT_COMBOBOX, self.onCombo) 

     sizer = wx.BoxSizer(wx.VERTICAL) 
     sizer.Add(self.combo) 
     panel.SetSizer(sizer) 

    #---------------------------------------------------------------------- 
    def onCombo(self, event): 
     """ 
     """ 
     self.phaseSelection = self.combo.GetValue() 
     print self.phaseSelection 

#---------------------------------------------------------------------- 
# Run the program 
if __name__ == "__main__": 
    app = wx.App(False) 
    frame = MyForm().Show() 
    app.MainLoop() 
Questions connexes