嗨我知道可以用列表执行此操作但是可以使用Comboboxes执行此操作吗?是否有类似于set函数的东西?
我尝试过使用带有组合框的set,但是我收到以下错误: AttributeError:'ComboBox'对象没有属性'Set'
感谢。
答案 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()方法,以及从某个事件中调用此函数的事实。希望这是你在寻找的。 p>