from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem
class NumericTableWidgetItem(QTableWidgetItem):
def __lt__(self, other):
try:
return float(self.text()) < float(other.text())
except ValueError:
return super().__lt__(other)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.table_widget = QTableWidget()
self.setCentralWidget(self.table_widget)
self.table_widget.setRowCount(10)
self.table_widget.setColumnCount(3)
self.table_widget.setHorizontalHeaderLabels(["Name", "Age", "Score"])
# 添加示例数据
data = [
("John", 25, 90),
("Alice", 21, 85),
("Bob", 30, 95),
("lilei", 26, 4),
]
for row, (name, age, score) in enumerate(data):
print(type(age), "-------", type(score))
self.table_widget.insertRow(row) #插入新行
self.table_widget.setItem(row, 0, QTableWidgetItem(name))
# 使用自定义的NumericTableWidgetItem来设置数值项
age_item = NumericTableWidgetItem(str(age))
score_item = NumericTableWidgetItem(str(score))
print(age_item.text(),"---item----",score_item.text())
self.table_widget.setItem(row, 1, age_item)
self.table_widget.setItem(row, 2, score_item)
# 启用排序功能
self.table_widget.setSortingEnabled(True)
# 对第二列(年龄)进行排序
# self.table_widget.sortItems(0)
if __name__ == "__main__":
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
pyqt5中QTableWidget-功能作用之排序重写
最新推荐文章于 2024-03-17 20:37:13 发布