2009-10-04 6 views
2

J'ai un wxPython ListCtrl avec cinq colonnes. Quatre d'entre eux contiennent des chaînes, la dernière a des valeurs entières. Je les stocke comme des cordes (c'est-à-dire '4', '17', etc.). Cependant, maintenant que j'ai ajouté un ColumnSorterMixin pour me permettre de trier des colonnes spécifiques dans la liste, je trouve, bien sûr, que la colonne integer est triée lexicalement plutôt que numériquement.Affichage d'entiers dans un listxtrx wxpython

Existe-t-il un moyen simple de résoudre ce problème?

Répondre

2

Je pense que la façon la plus robuste de tri personnalisé est d'utiliser la fonction SortItems() dans wx.ListCtrl. Notez que vous devez fournir des données d'élément pour chaque élément (en utilisant SetItemData())

Il suffit de fournir votre propre rappel, disent:

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

n'a pas vérifié, mais quelque chose le long de ces lignes devrait fonctionner pour toutes les colonnes , sauf si vous avez une colonne où certaines valeurs sont des chaînes représentant des entiers et d'autres non.

Questions connexes