Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dynamically change the choices in a wx.ComboBox()

Tags:

I didn't find a better way to change the different choices in a wx.ComboBox() than swap the old ComboBox with a new one. Is there a better way?

Oerjan Pettersen

#!/usr/bin/python  #20_combobox.py  import wx import wx.lib.inspection  class MyFrame(wx.Frame):     def __init__(self, *args, **kwargs):         wx.Frame.__init__(self, *args, **kwargs)          self.p1 = wx.Panel(self)         lst = ['1','2','3']         self.st = wx.ComboBox(self.p1, -1, choices = lst, style=wx.TE_PROCESS_ENTER)          self.st.Bind(wx.EVT_COMBOBOX, self.text_return)       def text_return(self, event):         lst = ['3','4']         self.st = wx.ComboBox(self.p1, -1, choices = lst, style=wx.TE_PROCESS_ENTER)   class MyApp(wx.App):     def OnInit(self):         frame = MyFrame(None, -1, '20_combobox.py')         frame.Show()         self.SetTopWindow(frame)         return 1  if __name__ == "__main__":     app = MyApp(0) #    wx.lib.inspection.InspectionTool().Show()     app.MainLoop() 
like image 292
Orjanp Avatar asked Mar 25 '09 18:03

Orjanp


1 Answers

wx.ComboBox derives from wx.ItemContainer, which has methods for Appending, Clearing, Inserting and Deleting items, all of these methods are available on wx.ComboBox.

One way to do what you want would be to define the text_return() method as follows:

def text_return(self, event):     self.st.Clear()     self.st.Append('3')     self.st.Append('4') 
like image 148
Moe Avatar answered Oct 19 '22 17:10

Moe