Domanda

Ho un ListCtrl wxPython con cinque colonne. Quattro di questi tenere stringhe, l'ultimo ha valori interi. Ho memorizzazione di questi come stringhe (cioè '4', '17', etc.). Tuttavia, ora che ho aggiunto un ColumnSorterMixin per farmi colonne sorta specifici nella lista, mi sto trovando, naturalmente, che la colonna integer può essere ordinata lessicalmente piuttosto che numericamente.

C'è un modo semplice di fissare questo?

È stato utile?

Soluzione

Credo che il modo più robusto di fare ordinamento personalizzato è quello di utilizzare SortItems () funzione in wx.ListCtrl. Si noti che è necessario fornire i dati voce per ogni elemento (usando SetItemData())

Basta fornire il proprio richiamata, dire:

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

Non controllare, ma qualcosa in questo senso dovrebbe funzionare per tutte le colonne, a meno che non si dispone di una colonna in cui alcuni valori sono stringhe che rappresentano numeri interi e alcuni non lo sono.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top