2014-12-09 362 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

之間的不斷變化的行號之間的衝突