Отображение целых чисел в listctrl wxpython
Вопрос
У меня есть wxpython listctrl с пятью столбцами. Четыре из них держат строки, последний имеет целочисленные значения. Я хранил их как строки (то есть «4», «17» и т. Д.). Тем не менее, теперь, когда я добавил ColumnSortermixin, чтобы позволить мне сортировать конкретные столбцы в списке, я, конечно, обнаружил, что целочисленный столбец сортируется лексически, а не численно.
Есть ли простой способ исправить это?
Решение
Я думаю, что самый надежный способ выполнения индивидуальной сортировки - использовать 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)
Не проверял это, но что -то в этом направлении должно работать для всех столбцов, если у вас нет столбца, где некоторые значения - это строки, представляющие целые числа, а некоторые нет.