是否可以将列表“设置”为ComboBox,wxpython?

时间:2011-11-18 12:18:12

标签: python wxpython

嗨我知道可以用列表执行此操作但是可以使用Comboboxes执行此操作吗?是否有类似于set函数的东西?

我尝试过使用带有组合框的set,但是我收到以下错误:     AttributeError:'ComboBox'对象没有属性'Set'

感谢。

3 个答案:

答案 0 :(得分:4)

好吧,您可以调用SetItems(myList)将列表放入ComboBox,覆盖其中已有的内容。

编辑:在组合框列表中创建列表的最常用方法是这样的:

myList = ["dog", "cat", "hamster"]
cbo = wx.ComboBox(self, choices=myList)

但是由于ComboBox继承自ItemContainer,你也可以像这个完整的例子那样做:

import wx

########################################################################
class MyFrame(wx.Frame):
    """"""

    #----------------------------------------------------------------------
    def __init__(self):
        """Constructor"""
        wx.Frame.__init__(self, None, title="Test")
        panel = wx.Panel(self)

        myList = ["dog", "cat", "hamster"]
        cbo = wx.ComboBox(panel)
        cbo.SetItems(myList)

        self.Show()

#----------------------------------------------------------------------
if __name__ == "__main__":
    app = wx.App(False)
    frame = MyFrame()
    app.MainLoop()

答案 1 :(得分:1)

http://www.wxpython.org/docs/api/wx.ComboBox-class.html

  

__init__(parent, id, value, pos, size, choices, style, validator, name)

combobox = wx.ComboBox(self, choices=myList)

答案 2 :(得分:1)

我相信您要求一种方法在“运行时”添加新项目?即表单创建后?如果是这样,请参阅下面的代码; - )

   def UpdateCitiesCombo(self):
    self.cmbCities.Clear()
    pc = PostalCode()
    if self.txtPostalCode.Value:
        cities = pc.GetFromCode(int(self.txtPostalCode.Value))
        for city in cities:
            self.cmbCities.Append(city[2])

    items = self.cmbCities.GetItems()

    index = -1
    try:
        if self.customer.city != "":
            index = items.index(self.customer.city)
        else:
            index = 0

        self.cmbCities.SetSelection(index)

    except ValueError:
        self.cmbCities.SetValue(self.customer.city)

本质上你不应该是ComboBox的Clear()和Append()方法,以及从某个事件中调用此函数的事实。希望这是你在寻找的。