我有一个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
答案 0 :(得分:0)
最后我发现了它。
问题在于在构造函数中启用排序。似乎默认排序是Z-A。通过单击空表的标题将排序更改为A-Z可以解决错误,但最佳解决方案是将行self.tAccounts.setSortingEnabled(True)
移动到loadDay
函数的末尾。由于启用了排序和QTableWidget