动态更改 wx.ComboBox() 中的选项

23

我没有找到比用一个新的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()
1个回答

38

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

8
或者,您可以使用 self.sf.AppendItems(['3', '4']) 添加项目。 - Toni Ruža
@Toni Cool 我正在寻找那个函数,但不知何故它没有被记录在文档中。 - Moe
谢谢。AppendItems在新文档中,但不在旧文档中。 - Orjanp
文档可以在http://wxpython.org/Phoenix/docs/html/ItemContainer.html#ItemContainer.Clear找到。 - Tong
1
更新:文档链接已失效 - Magix
文档的内部结构已经改变,因此该链接中的文档不再存在。您仍然可以通过从根页面深入挖掘来获取该方法的文档:https://wxpython.org/Phoenix/docs/html/main.html - RobinDunn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接