按数字对 QListWidget 进行排序

Posted

技术标签:

【中文标题】按数字对 QListWidget 进行排序【英文标题】:Sorting a QListWidget by numbers 【发布时间】:2018-05-17 08:49:00 【问题描述】:

我有一个QListWidget,里面有这些物品:

1
10
100
11
110
111
12

我想按数字对列表中的项目进行排序:

1
10
11
12
100
110
111

有什么想法吗?

【问题讨论】:

【参考方案1】:

默认情况下QListWidget 将根据文本对元素进行排序,如果您想根据与文本关联的数值进行排序,则必须创建自定义QListWidgetItem 并覆盖方法@987654323 @:

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_())

【讨论】:

以上是关于按数字对 QListWidget 进行排序的主要内容,如果未能解决你的问题,请参考以下文章