You can simply use GetSelection()
in the event callback and set all of the comboboxes to the result obtained.
i.e.
import wx
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title="Test")
self.MyList = ["Abc","Def","Ghi"]
self.panel1 = wx.Panel(self,-1)
self.panel2 = wx.Panel(self,-1)
self.panel3 = wx.Panel(self,-1)
self.Picker1 = wx.ComboBox(self.panel1, pos=(10,10), value="1", size=(100, -1), choices=self.MyList)
self.text1 = wx.StaticText(self.panel1, -1, "1", pos=(120,10))
self.Picker2 = wx.ComboBox(self.panel2, pos=(10,10), value="2", size=(100, -1), choices=self.MyList)
self.text2 = wx.StaticText(self.panel2, -1, "2", pos=(120,10))
self.Picker3 = wx.ComboBox(self.panel3, pos=(10,10), value="3", size=(100, -1), choices=self.MyList)
self.text3 = wx.StaticText(self.panel3, -1, "3", pos=(120,10))
self.Bind(wx.EVT_COMBOBOX, self.EvtComboBox)
vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add(self.panel1)
vbox.Add(self.panel2)
vbox.Add(self.panel3)
self.SetSizer(vbox)
self.Show()
self.panel1.SetFocus()
self.panel2.Hide()
self.panel3.Hide()
def EvtComboBox(self,event):
ev = event.GetSelection()
self.Picker1.SetSelection(ev)
self.Picker2.SetSelection(ev)
self.Picker3.SetSelection(ev)
self.panel2.Show()
self.panel3.Show()
self.Layout()
if __name__ == "__main__":
app = wx.App()
frame = MyFrame()
app.MainLoop()
I have added a simple piece of text beside each combobox for clarity and initially hidden panels 2 & 3 as you intimate that they are hidden, in your question. Note self.Layout()
is required to display the unhidden panels.