Вопрос

У меня есть 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)

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top