Сохранить выбранное значение в выпадающем списке в wxpython - PullRequest
1 голос
/ 29 сентября 2011

Я работаю над созданием графического интерфейса пользователя с использованием wxpython, но мой код состоит в том, что у меня есть класс с объявлением fram

, а также я объявил переменные, которые я хочу изменить их значения, основываясь на выпадающих списках.

выбор.я сделал следующее:

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()) 

и это код события "OnPhaseSelection":

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

, где я хочу сохранить выбранное значение в переменной "self.phaseSelection"что я объявил ее с пустой строкой

в качестве начального значения, затем я хочу использовать эту переменную с новым сохраненным значением, но когда я запускаю

программу, переменная содержит значение по умолчанию:комбинированный ящик!пожалуйста, в чем проблема в

моей работе?

1 Ответ

3 голосов
/ 29 сентября 2011

Я не уверен, что с этим не так. Похоже, это должно работать. Я скопировал большинство из них и поместил в работающий пример, который работает в 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()
...