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

问题描述 投票:0回答:1

只有数字列。但这有点像:

“用我的错误代码进行排序”

以及这部分代码的样子:

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

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

python python-3.x pyqt pyqt5
1个回答
0
投票

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

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

为了实现数字排序,必须将数据存储为数字,这可以通过使用setData(role, value)来完成:

setData(role, value)

或者,您可以继承QTableWidgetItem,如以下答案所示: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)

© www.soinside.com 2019 - 2024. All rights reserved.