2009-03-25 2 views
14

Я не нашел лучшего способа изменить различные варианты в wx.ComboBox(), чем заменить старый ComboBox на новый. Есть ли способ лучше?Динамически менять выбор в 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() 

ответ

25

wx.ComboBox происходит от wx.ItemContainer, который имеет методы для Appending, Clearing, Inserting и Deleting пунктов, все эти методы доступны на wx.ComboBox.

Один из способов сделать то, что вы хотите, было бы определить метод text_return() следующим образом:

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

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

+0

@Toni Прохладный Я искал это, но по какой-то причине эта функция не документирована. – Moe

+0

Спасибо. AppendItems находится в новых документах, но не в старых. – Orjanp

Смежные вопросы