2009-03-25 19 views
14

Nie znalazłem lepszego sposobu na zmianę różnych opcji wx.ComboBox() niż na zamianę starego ComboBox na nowy. Czy istnieje lepszy sposób?Dynamicznie zmieniaj opcje wx.ComboBox()

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

Odpowiedz

25

wx.ComboBox wywodzi wx.ItemContainer, która ma metody Appending, Clearing, Inserting i Deleting przedmiotów, wszystkie te metody są dostępne na wx.ComboBox.

Jednym ze sposobów, aby robić to, co chcesz byłoby zdefiniować metodę text_return() w następujący sposób:

def text_return(self, event): 
    self.st.Clear() 
    self.st.Append('3') 
    self.st.Append('4') 
+2

lub self.sf.AppendItems ([ '3', '4']) –

+0

@Toni super Szukałem tego - ale z jakiegoś powodu ta funkcja nie jest udokumentowana. – Moe

+0

Dzięki. AppendItems jest w nowych dokumentach, ale nie w starych. – Orjanp

Powiązane problemy