2014-12-09 8 views
0

У меня есть QTableWidget, заполненный списком списков. Каждый внутренний список состоит из восьми элементов, а в моей таблице есть девятый столбец управления, рассчитанный после загрузки других. Я могу читать и печатать для консолирования содержимого любой ячейки таблицы, например print(self.tAccounts.item(52,3).text()), поэтому я думаю, что нет никаких проблем с данными, но в таблице показано только содержимое ячейки для первой строки и столбца в таблице, другие банки. Я должен ошибаться в каком-то месте, но я не вижу.PyQt5 QTableWidget, показывающий только первую строку и столбец

Использование 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 

ответ

0

Наконец, я нашел его.

Проблема заключается в разрешении сортировки в конструкторе. Кажется, сортировка по умолчанию - Z-A. Изменение сортировки на A-Z путем нажатия в заголовке пустой таблицы решает проблему, но лучшим решением является перемещение строки self.tAccounts.setSortingEnabled(True) до конца функции loadDay. Кажется, это столкновение между постоянно меняющимся номером строки из-за включенной сортировки и алгоритмом обновления QTableWidget