Отображение целых чисел в wxpython listctrl

У меня есть wxPython ListCtrl с пятью столбцами. Четыре из них содержат строки, последний имеет целочисленные значения. Я хранил их в виде строк (например, «4», «17» и т. д.). Однако теперь, когда я добавил ColumnSorterMixin, чтобы позволить мне сортировать определенные столбцы в списке, я обнаружил, конечно, что целочисленный столбец сортируется лексически, а не численно.

Есть ли простой способ исправить это?


person Charles Anderson    schedule 04.10.2009    source источник


Ответы (1)


Я думаю, что самый надежный способ выполнить пользовательскую сортировку — использовать SortItems() функция в wx.ListCtrl. Обратите внимание, что вы должны предоставить данные элемента для каждого элемента (используя SetItemData())

Просто предоставьте свой собственный обратный вызов, скажем:

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

Не проверял, но что-то в этом роде должно работать для всех столбцов, если только у вас нет столбца, в котором некоторые значения являются строками, представляющими целые числа, а некоторые нет.

person Abgan    schedule 04.10.2009