【发布时间】:2020-10-29 05:52:12
【问题描述】:
我有一个包含 3 行和 2 列的表。我正在尝试根据第一列数据对表格进行排序。当我使用setSortingEnabled(True) 时,它会启用所有列的排序。我尝试了不同的方法,但没有任何帮助解决这个问题。附上示例代码供参考。
from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.QtWidgets import QWidget, QCheckBox, QApplication
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import sys
class Window(QtWidgets.QMainWindow):
def __init__(self):
super (Window, self).__init__()
Window.setGeometry(self, 0, 22, 480, 250)
self.table = QtWidgets.QTableWidget(self)
self.table.setGeometry(QtCore.QRect(10, 5, 460, 200))
self.table.setColumnCount(3)
horHeaders = ["seat", "material"]
data = [("15","leather"),("18","plastic"),("20","resin")]
self.table.setHorizontalHeaderLabels(horHeaders)
self.table.verticalHeader().setVisible(False)
row_number = 0
for i in data:
self.table.insertRow(row_number)
self.table.setItem(row_number, 0, QTableWidgetItem(i[0]))
self.table.setItem(row_number, 1, QTableWidgetItem(i[1]))
row_number += 1
print(i)
self.table.setSortingEnabled(True)
self.table.sortByColumn(0, QtCore.Qt.AscendingOrder)
self.table.horizontalHeader().setSortIndicator(0, Qt.AscendingOrder)
self.show()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
【问题讨论】:
-
我不明白你的问题,你能详细解释一下你想得到什么。
-
我只想启用第一个标题来对表中的内容进行排序。目前,我可以使用第 1 列和第 2 列进行排序。升序或降序箭头应仅适用于第 1 列。如果单击第二列,则不应进行排序。
标签: python python-3.x pyqt5 qtablewidget