我搜索了一段时间,但找不到满意的答案来解决我的问题。我需要在 QTreeView 中表示一个列表:
例子:
['.', ['A', 'B', 'C', 'D', 'E', 'F']], ['A', ['G', 'H']], ['A\\G', []], ['A\\H', ['K', 'L']], ['A\\G\\K', []], ['A\\G\\L', []], ['B', ['I', 'J']], ['B\\I', []], ['B\\J', []], ['C', []], ['D', []], ['E', []], ['F', ['M']], ['F\\M', []]
Run Code Online (Sandbox Code Playgroud)
应该这样表示:
.
|____A
|____H
|____G
|____K
|____L
|____B
|____I
|____J
|____C
|____D
|____E
|____F
|____M
Run Code Online (Sandbox Code Playgroud)
编辑:也许数据准备得不好。我也可以采用这种结构:
[".", "A", "A\\G", "A\\H", "A\\H\\K", "A\\H\\L", "B", "B\\I", "B\\J", "C", "D", "E", "F", "F\\M"]
Run Code Online (Sandbox Code Playgroud)
在控制台中可视化该结构不是问题,但我无法在树视图中得到正确的结果。这是我的节点类和我的 TreeModel
from PySide.QtCore import *
from PySide.QtGui import * …Run Code Online (Sandbox Code Playgroud) 我需要帮助从 QTreeView 结构构建分层嵌套字典以获得如下内容:
{"A": {"B": {"H": {}, "I": {"M": {}, "N": {}}}, "D": {}, "E": {}, "F": {}, "G": {"L": {}}, "C": {"J": {}, "K": {}}}}
{
"A": {
"B": {
"H": {},
"I": {
"M": {},
"N": {}
}
},
"D": {},
"E": {},
"F": {},
"G": {
"L": {}
},
"C": {
"J": {},
"K": {}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我没有使用列,并且 QTreeView 代表一个目录结构(我实际上是从像上面那样的字典中提取它的,只是想在修改树后重新创建该字典)
我已经有这样的事情:
def to_dict(self, _structure={}, _parent=''):
sublist[self.name()] = self._children
for child in self._children:
_structure[self.name()] = sublist
child.to_dict(_structure, …Run Code Online (Sandbox Code Playgroud)