如果列不存在,则创建它并设置文本 - 如果它确实存在,则检查文本并使用下一列(如果已填充)
If column doesn't exist, create it and setText - if it does exist, check for text and use next column if filled
实际上我想增加列数,第一列是3,最初是不存在的。生成该列,并用标签中的文本填充它。对于后续操作,检查第 3 行的第 3 行是否有文本,如果有 - 创建一个新列,如果没有,则设置标签
中的文本
这是我目前所做的,目前它会适当地增加列生成,但是当我转到列表中的下一个项目时它会继续增加。我希望它返回并再次检查第 3 列中的文本
def gen_cols(self, row, col, header):
item = self.table.item(row, col)
if item is None:
item = QTableWidgetItem()
header_item = QtWidgets.QTableWidgetItem(header)
self.table.insertColumn(col)
self.table.setHorizontalHeaderItem(col, header_item)
self.table.setItem(row, col, item)
return item
def update_table(self, s):
header = 'Image: ' + str(self.count)
row = self.table.currentItem().row()
self.col = self.table.columnCount()
# item = self.gen_cols(row, col, header)
item = self.table.item(row, self.col)
if not item:
item = self.gen_cols(row, self.col, header)
item.setText(s)
self.count += 1
QTableWidget有点奇怪,因为即使模型有指定的行数和列数,如果没有设置数据,item()
可能returnNone
[=16] =]
QTableWidgetItem 仅在以下两种情况下 returned:
- 使用
setItem()
; 以编程方式创建了一个项目
- 数据已被用户输入;
这意味着,对于您所需要的,仅检查 item()
是否 return None
是不够的,您必须先检查索引是否真正有效创建一个新列。在您的情况下,如果索引的列少于列数,我们可以假设索引有效。
def update_table(self, s):
row = self.table.currentItem().row()
maxColumn = self.table.columnCount()
col = 2
while col < maxColumn:
item = self.table.item(row, col)
if item is None:
item = QTableWidgetItem()
self.table.setItem(row, col, item)
if not item.text():
break
col += 1
else:
header = 'Image: ' + str(self.count)
item = self.gen_cols(row, col, header)
item.setText(s)
self.count += 1
实际上我想增加列数,第一列是3,最初是不存在的。生成该列,并用标签中的文本填充它。对于后续操作,检查第 3 行的第 3 行是否有文本,如果有 - 创建一个新列,如果没有,则设置标签
中的文本这是我目前所做的,目前它会适当地增加列生成,但是当我转到列表中的下一个项目时它会继续增加。我希望它返回并再次检查第 3 列中的文本
def gen_cols(self, row, col, header):
item = self.table.item(row, col)
if item is None:
item = QTableWidgetItem()
header_item = QtWidgets.QTableWidgetItem(header)
self.table.insertColumn(col)
self.table.setHorizontalHeaderItem(col, header_item)
self.table.setItem(row, col, item)
return item
def update_table(self, s):
header = 'Image: ' + str(self.count)
row = self.table.currentItem().row()
self.col = self.table.columnCount()
# item = self.gen_cols(row, col, header)
item = self.table.item(row, self.col)
if not item:
item = self.gen_cols(row, self.col, header)
item.setText(s)
self.count += 1
QTableWidget有点奇怪,因为即使模型有指定的行数和列数,如果没有设置数据,item()
可能returnNone
[=16] =]
QTableWidgetItem 仅在以下两种情况下 returned:
- 使用
setItem()
; 以编程方式创建了一个项目
- 数据已被用户输入;
这意味着,对于您所需要的,仅检查 item()
是否 return None
是不够的,您必须先检查索引是否真正有效创建一个新列。在您的情况下,如果索引的列少于列数,我们可以假设索引有效。
def update_table(self, s):
row = self.table.currentItem().row()
maxColumn = self.table.columnCount()
col = 2
while col < maxColumn:
item = self.table.item(row, col)
if item is None:
item = QTableWidgetItem()
self.table.setItem(row, col, item)
if not item.text():
break
col += 1
else:
header = 'Image: ' + str(self.count)
item = self.gen_cols(row, col, header)
item.setText(s)
self.count += 1