example python combobox wxpython

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



choice wxpython (2)

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

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

Parece que ComboBox solo acepta cadenas como modelo. No puedo crear un diccionario de etiquetas para pares de identificación ya que hay etiquetas duplicadas.

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


Este tema apareció en el canal IRC de wxPython el día de hoy, pero con respecto a 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.