我有一个Vertex对象列表,每个对象都有自己的标签和id。如何将此列表用作wxPython ComboBox的模型,以便当用户选择一个选项时,我可以立即检索Vertex id?
似乎ComboBox只接受字符串作为模型。我无法创建标签到id对的字典,因为有重复的标签。
我注意到一个ComboCtrl类,我可以创建一个专门的组合框子类,但我觉得有一个更简单的解决方案。
答案 0 :(得分:5)
今天早些时候,wxPython IRC频道出现了这个话题,但是关于ListBox。幸运的是,这两个小部件都继承自wx.ItemContainer,因此您可以执行以下操作:
for item in ObjList:
self.myCboBox.append(item.label, item)
然后在事件处理程序中,您将执行以下操作:
itemObject = self.myCboBox.GetClientData(self.myCboBox.GetSelection())
itemID = itemObject.id
这应该有效。
答案 1 :(得分:0)
最简单的方法是将顶点存储在列表中并按索引检索选定的值(由wx.ComboBox GetSelection()
返回)。
编辑: q& d示例:
l = [{"value" : value_1, "label" : "label"},
{"value" : value_2, "label" : "label"}]
def on_select (event):
i = event.GetSelection()
print (l[i]["value"])
# ui construction omitted
Bind (wx.EVT_COMBOBOX, on_slect)