¿Cómo puedo almacenar objetos que no sean cadenas en un ComboBox wxPython?

Tengo una lista de objetos Vertex, cada uno con sus propias tags e ID. ¿Cómo puedo usar esta lista como modelo para un ComboBox de wxPython, de modo que cuando un usuario selecciona una opción, puedo recuperar inmediatamente el ID de Vertex?

Parece que ComboBox solo acepta cadenas como modelo. No puedo crear un diccionario de etiqueta a pares de ID porque hay tags duplicadas.

Noté una clase ComboCtrl que puedo crear subclases para crear un cuadro combinado especializado, pero siento que hay una solución más fácil para esto.

Este tema surgió en el canal IRC de wxPython más temprano hoy, pero en lo que respecta al ListBox. Afortunadamente, ambos widgets heredan de wx.ItemContainer, por lo que puede hacer lo siguiente:

 for item in ObjList: self.myCboBox.append(item.label, item) 

Luego, en el controlador de eventos, harías algo como:

 itemObject = self.myCboBox.GetClientData(self.myCboBox.GetSelection()) itemID = itemObject.id 

Eso debería funcionar.

El enfoque más directo sería almacenar vértices en una lista y recuperar el valor seleccionado por índice (devuelto por wx.ComboBox GetSelection() ).

Edición: ejemplo 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)