2009-03-25 15 views
14

Non ho trovato un modo migliore per modificare le diverse scelte in un wx.ComboBox() di scambiare il vecchio ComboBox con uno nuovo. C'è un modo migliore?Modificare dinamicamente le scelte in un 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() 

risposta

25

wx.ComboBox deriva da wx.ItemContainer, che ha metodi per Appending, Clearing, Inserting e Deleting elementi, tutti questi metodi sono disponibili su wx.ComboBox.

Un modo per fare quello che vuoi sarebbe quello di definire il metodo text_return() come segue:

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

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

+0

@Toni fredda Stavo cercando quello - ma per qualche motivo che la funzione non è documentata. – Moe

+0

Grazie. AppendItems è nei nuovi documenti, ma non in quelli precedenti. – Orjanp

Problemi correlati