Сортировка QListWidget по номерам - PullRequest
0 голосов
/ 17 мая 2018

У меня есть QListWidget с этими предметами:

1
10
100
11
110
111
12

А я хочу заказать элементы списка по номерам:

1
10
11
12
100
110
111

Есть идеи?

1 Ответ

0 голосов
/ 17 мая 2018

По умолчанию QListWidget упорядочит элементы по отношению к тексту, если вы хотите упорядочить по числовому значению, связанному с текстом, вы должны создать пользовательский QListWidgetItem и перезаписать метод * 1003. *:

import sys

from PyQt4.QtGui import QApplication, QListWidget, QListWidgetItem
from PyQt4.QtCore import Qt

class ListWidgetItem(QListWidgetItem):
    def __lt__(self, other):
        try:
            return float(self.text()) < float(other.text())
        except Exception:
            return QListWidgetItem.__lt__(self, other)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = QListWidget()
    for i in [1, 10, 100, 11, 110, 111, 12]:
        w.addItem(ListWidgetItem(str(i)))
    w.sortItems()
    w.show()
    sys.exit(app.exec_())
...