如何对 QTableWidget 的列值进行排序?

6

在此输入图像描述当我点击右侧的“Çiz”按钮时,我希望使用Python代码按特定列中的值进行排序。然而,如果数字相同,则根据第一个元素进行排序。我意识到它将值视为字符串。我在网站上查看了许多问题,但没有找到答案。我不想编写脚本,因为似乎有很容易的排序解决方案。

这是来自Qt 5.10的我的脚本,在这里

这是我的脚本-我写了0以按第一列排序:

QTableWidget.sortItems(0, QtCore.Qt.AscendingOrder)

但它接受的是字符串值而不是数字值。实际上,当用户点击标题时,有一个脚本可以对值进行排序,但我不希望让用户点击标题:

QTableWidget.setSortingEnabled(True)

在这个例子中,它会自动添加值和2列。我只有两列,我想按照第一列对它们进行排序,并且其他列也应该受到影响。 - Mustafa Uçar
1个回答

9

最终我通过Gary Hughes和这篇文章找到了解决方案。

我做了一个快速的示例以尝试:

mywidget = QTableWidget()
mywidget .insertColumn(0)
mywidget .insertColumn(1)
list1 = [25,1,7]
list2 = [3,15,1]
for num in range(len(list1)):
    mywidget.insertRow(num)
    item = QTableWidgetItem()
    item.setData(Qt.EditRole, list1[num])
    mywidget.setItem(num, 0, item)
    mywidget.setItem(num, 1, QTableWidgetItem(str(list2[num])))
mywidget.sortItems(0, QtCore.Qt.AscendingOrder)
mywidget.show()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接