appendColumn 表现得像 appendRow
appendColumn bahaving like appendRow
我正在尝试制作一棵树:
所以我已经使用这个设置了第一列:
self._populate_tree(data, self.tree_model.invisibleRootItem())
def _populate_tree(self, children, parent):
for child in sorted(children):
child_item = QStandardItem(str(child))
parent.appendRow(child_item)
self._populate_tree(children[child], child_item)
示例数据如下:
data = {'Day 1':
{'Completed':
{'CR_10': 2, 'M_12': 1, 'RE_23': 1},
'Missed':
{'WM_11': 1, 'DW_5': 2, 'BT_22': 1},
'Score': '-6'
}
}
它用字符串(第 1 天,已完成,未完成,CR_10...)填充树,但不会添加数字。
因为如果 children 的类型不是字典(它无法访问 children[child]),它会在递归中引发错误
我对他们进行了类型检查:
if type(children) == dict:
# above code ...
else:
parent.appendColumn([QStandardItem(str(children))])
但奇怪的是,它的行为与使用 parent.appendRow(QStandardItem(str(children)))
相同
它将数字放置为当前项目的子项。我想把它放在旁边,同一行,下一列。
目前我有这个:
但我想要这个:
您需要增加模型的列数才能显示第二列:
root_model = QStandardItemModel()
root_model.setColumnCount(2)
并且您还需要将子项行添加为列表:
def _populate_tree(self, children, parent):
for child in sorted(children):
child_item = QStandardItem(str(child))
row = [child_item]
if isinstance(children[child], dict):
self._populate_tree(children[child], child_item)
else:
item = QStandardItem(str(children[child]))
row.append(item)
parent.appendRow(row)
我正在尝试制作一棵树:
所以我已经使用这个设置了第一列:
self._populate_tree(data, self.tree_model.invisibleRootItem())
def _populate_tree(self, children, parent):
for child in sorted(children):
child_item = QStandardItem(str(child))
parent.appendRow(child_item)
self._populate_tree(children[child], child_item)
示例数据如下:
data = {'Day 1':
{'Completed':
{'CR_10': 2, 'M_12': 1, 'RE_23': 1},
'Missed':
{'WM_11': 1, 'DW_5': 2, 'BT_22': 1},
'Score': '-6'
}
}
它用字符串(第 1 天,已完成,未完成,CR_10...)填充树,但不会添加数字。
因为如果 children 的类型不是字典(它无法访问 children[child]),它会在递归中引发错误
我对他们进行了类型检查:
if type(children) == dict:
# above code ...
else:
parent.appendColumn([QStandardItem(str(children))])
但奇怪的是,它的行为与使用 parent.appendRow(QStandardItem(str(children)))
它将数字放置为当前项目的子项。我想把它放在旁边,同一行,下一列。
目前我有这个:
但我想要这个:
您需要增加模型的列数才能显示第二列:
root_model = QStandardItemModel()
root_model.setColumnCount(2)
并且您还需要将子项行添加为列表:
def _populate_tree(self, children, parent):
for child in sorted(children):
child_item = QStandardItem(str(child))
row = [child_item]
if isinstance(children[child], dict):
self._populate_tree(children[child], child_item)
else:
item = QStandardItem(str(children[child]))
row.append(item)
parent.appendRow(row)