PyQt5 QTableWidget показывает только первую строку и столбец
У меня есть QTableWidget
заполняется списком списков. Каждый внутренний список имеет восемь элементов, а моя таблица имеет девятый контрольный столбец, рассчитанный после загрузки других. Я могу читать и печатать, чтобы утешить содержимое любой ячейки таблицы, как print(self.tAccounts.item(52,3).text())
, поэтому я думаю, что нет никаких проблем с данными, но таблица показывает только содержимое ячейки для первой строки и столбца в таблице, оставляя другой банк. Я должен был ошибиться в каком-то месте, но я не вижу.
Использование PyQt 5 и Python 3.
Конструктор
class Table(QWidget):
def __init__(self, parent=None):
super(Table, self).__init__(parent)
self.accounts = [] # The source is created in the constructor\
# and populate in other member function
self.tAccounts = QTableWidget(0,9)
self.tAccounts.setSortingEnabled(True)
self.tAccounts.setHorizontalHeaderLabels(['1','2','3','4','5','6','7','8','9'])
self.tAccounts.resizeColumnsToContents()
self.tAccounts.verticalHeader().hide()
Функция-член:
def loadDay(self):
for row, account in enumerate(self.accounts):
self.tAccounts.insertRow(row)
for col in range(8):
self.tAccounts.setItem(row, col, QTableWidgetItem(str(accounts[col])))
self.tAccounts.item(row,col).setTextAlignment(Qt.AlignRight)
self.tAccounts.setItem(row, 8, QTableWidgetItem('')) # defined for further use
1 ответ
Наконец я нашел это.
Проблема в том, чтобы включить сортировку в конструкторе. По умолчанию сортировка ZA. Изменение сортировки на AZ, нажав в заголовке пустой таблицы, решает проблему, но лучшее решение - переместить строку self.tAccounts.setSortingEnabled(True)
до конца loadDay
функция. Кажется, что это конфликт между постоянно меняющимся номером строки из-за включенной сортировки и алгоритма обновления QTableWidget