QTableWidget工作中的数字排序不正确Pyqt5

2024-03-29 09:54:38 发布

您现在位置:Python中文网/ 问答频道 /正文

有一列只有数字。但它是这样的:

sort with my wrong code

以及这部分代码的外观:

self.table = QTableWidget(self)  
self.table.setColumnCount(5)     
self.table.setRowCount(0)       
self.table.setSortingEnabled(True)
self.table.sortByColumn(1, Qt.DescendingOrder)

这里不仅仅有4行或5行,它不能是10100行或更多,因为我有一个按钮可以在第一列中插入带有自定义编号的行。和一些按钮来编辑此列中的项目(但仍然只有数字)


Tags: 代码selftruetable数字qt按钮编号
1条回答
网友
1楼 · 发布于 2024-03-29 09:54:38

如果将项目数据作为文本字符串插入,它们将始终使用字母数字顺序,因此从1到20的数字将按如下顺序排序:

1, 10, 2, 20, 3, 4, ...

为了实现数字排序,数据必须存储为数字,这可以通过使用^{}来实现:

from random import randrange
class MyWindow(QtWidgets.QWidget):
# ...
    def addData(self):
        for row in range(10):
            item = QtWidgets.QTableWidgetItem()
            item.setData(QtCore.Qt.DisplayRole, randrange(10000))
            self.table.setItem(row, 1, item)

或者,您可以将QTableWidgetItem子类化,如以下答案所示:Sorting in pyqt tablewidget

相关问题 更多 >