У меня есть QListWidget со следующими предметами:
1
10
100
11
110
111
12
И я хочу упорядочить элементы списка по номерам:
1
10
11
12
100
110
111
Любая идея?






По умолчанию QListWidget упорядочивает элементы по тексту, если вы хотите упорядочить элементы по числовому значению, которое связано с текстом, вы должны создать собственный QListWidgetItem и перезаписать метод __lt__:
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_())