Python 在QTableWidget中对数字列进行排序
我正在尝试使用PyQT5对QTableWidget中的数字列进行排序。我读了一些例子并尝试过,但效果不太好。 它总是返回相同的结果 这是在分类之前 这是在分类之后Python 在QTableWidget中对数字列进行排序,python,pyqt,pyqt5,qtablewidget,Python,Pyqt,Pyqt5,Qtablewidget,我正在尝试使用PyQT5对QTableWidget中的数字列进行排序。我读了一些例子并尝试过,但效果不太好。 它总是返回相同的结果 这是在分类之前 这是在分类之后 问题在于在QTableWidgetItem中使用字符串而不是数字。鉴于此,有几种选择: 存储数字而不是字符串: import sys from PyQt5 import QtCore, QtWidgets app = QtWidgets.QApplication(sys.argv) w = QtWidgets.Q
问题在于在QTableWidgetItem中使用字符串而不是数字。鉴于此,有几种选择:
- 存储数字而不是字符串:
import sys from PyQt5 import QtCore, QtWidgets app = QtWidgets.QApplication(sys.argv) w = QtWidgets.QTableWidget(100, 1) w.setSortingEnabled(True) for i in range(w.rowCount()): it = QtWidgets.QTableWidgetItem() it.setData(QtCore.Qt.DisplayRole, i) w.setItem(i, 0, it) w.resize(640, 480) w.show() sys.exit(app.exec_())
import sys
from PyQt5 import QtWidgets
class TableWidgetItem(QtWidgets.QTableWidgetItem):
def __lt__(self, other):
try:
return float(self.text()) < float(other.text())
except ValueError:
return super().__lt__(other)
app = QtWidgets.QApplication(sys.argv)
w = QtWidgets.QTableWidget(100, 1)
w.setSortingEnabled(True)
for i in range(w.rowCount()):
it = TableWidgetItem(str(i))
w.setItem(i, 0, it)
w.resize(640, 480)
w.show()
sys.exit(app.exec_())