Сортировка чисел в QTableWidget работает неправильно Pyqt5 - PullRequest
0 голосов
/ 03 марта 2020

Есть столбцы только с цифрами. Но это выглядит так:

sort with my wrong code

И как эта часть кода выглядит так:

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 или больше, потому что у меня есть кнопка для вставки строки с пользовательским номером в этом 1-м столбце. И несколько кнопок для редактирования элементов в этом столбце (но это пока только цифры)

1 Ответ

0 голосов
/ 03 марта 2020

Если вы вставите данные элемента в виде текстовых строк, они всегда будут использовать алфавитно-цифровой порядок, поэтому числа от 1 до 20 будут отсортированы следующим образом:

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

Для достижения числового порядка данные имеют хранится как цифра c, и это можно сделать с помощью setData(role, value):

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)

В качестве альтернативы, вы можете создать подкласс QTableWidgetItem, как показано в этом ответе: Сортировка в pyqt tablewidget .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...