2009-03-25 9 views
14

Je n'ai pas trouvé de meilleur moyen de changer les différents choix dans un wx.ComboBox() que de remplacer l'ancien ComboBox par un nouveau. Y a-t-il un meilleur moyen?Modifier dynamiquement les choix dans 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() 

Répondre

25

wx.ComboBox dérive de wx.ItemContainer, qui a des méthodes pour Appending, Clearing, Inserting et Deleting articles, toutes ces méthodes sont disponibles sur wx.ComboBox.

Une façon de faire ce que vous voulez serait de définir la méthode text_return() comme suit:

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

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

+0

@Toni cool Je cherchais cela - mais pour une raison quelconque, cette fonction n'est pas documentée. – Moe

+0

Merci. AppendItems est dans les nouveaux documents, mais pas dans les anciens. – Orjanp

Questions connexes