0

我有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
4

1 回答 1

0

最后我找到了。

问题在于在构造函数中启用排序。似乎默认排序是 ZA。通过单击空表的标题将排序更改为 AZ 可以解决该错误,但最好的解决方案是将行移动到函数self.tAccounts.setSortingEnabled(True)的末尾。loadDay似乎是由于启用排序而不断变化的行号与更新算法之间的冲突QTableWidget

于 2014-12-09T14:37:00.440 回答