Pregunta

Tengo un wxpython listCtrl con cinco columnas. Cuatro de estas cadenas de retención, la última tiene valores enteros. He estado almacenando estos como cadenas (es decir, '4', '17', etc.). Sin embargo, ahora que he agregado una columna de columnas para permitirme ordenar columnas específicas en la lista, descubro, por supuesto, que la columna entera se está clasificando léxicamente en lugar de numéricamente.

¿Existe una manera simple de arreglar esto?

¿Fue útil?

Solución

Creo que la forma más robusta de hacer un orden personalizado es usar SortItems () función en wx.listctrl. Tenga en cuenta que debe proporcionar datos de elementos para cada elemento (utilizando SetItemData())

Solo proporcione su propia devolución de llamada, diga:

def sortColumn(item1, item2):
    try: 
        i1 = int(item1)
        i2 = int(item2)
    except ValueError:
        return cmp(item1, item2)
    else:
        return cmp(i1, i2)

No lo revisó, pero algo en este sentido debería funcionar para todas las columnas, a menos que tenga una columna donde algunos valores son cadenas que representan enteros y otros no.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top