【发布时间】:2014-04-20 14:39:00
【问题描述】:
我目前正在尝试做的是采用在底部子级别具有复选框的填充树(qtreewidget),如果选中该框,则将路径的文本返回给子级。我想这样做的原因是,如果检查了一个孩子,它将更改字典中键中的值。 (创建树的“原始”字典)。这是我的意思的视觉示例:
- 根据用户输入和服务器目录爬取,我们填充了一个看起来像这样的树: (只有最低级别的子项目有复选框。)对于可怕的树形图感到抱歉!希望这是有道理的...
已编辑
学习
-主题1
--日期
---[]c
---[]d
---[]e
-主题2
--日期
---[]g
---[]h
如果有人检查(例如)“g”级别的孩子,是否有办法以类似 [1, B, g] 或 1-Bg 或 1 的形式获取“g”的路径/B/g 等?
其中一个子级别(例如示例 A 和 B)也设置为用户可编辑。所以我需要来自树的信息,而不是最初填充树的信息。
我尝试打印 self.ui.treeWidget 索引,但没有真正获得我想要的东西。我觉得好像有一个简单的解决方案,但我似乎无法找到它。希望有人可以提供帮助!
实际代码片段:
for h,study in enumerate(tree_dict['study']):
study_name = study['study_name']
treeSTUDY = QtGui.QTreeWidgetItem(self.ui.treeWidget, [study_name])
treeSTUDY.setFlags(QtCore.Qt.ItemIsEnabled)
self.ui.treeWidget.expandItem(treeSTUDY)
for i,subject in enumerate(study['subject']):
subject = subject['ID']
treeSUBJECT = QtGui.QTreeWidgetItem(treeSTUDY, [subject_id])
treeSUBJECT.setFlags(QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled)
for j,visit in enumerate(subject['visit']):
scan_date = visit['date']
treeDATE = QtGui.QTreeWidgetItem(treeSUBJECT, [scan_date[4:6])
treeDATE.setFlags(QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled)
for k,ser in enumerate(visit['series']):
s_name = ser['name'] + '-' + ser['description']
count = str(ser['count'])
treeSCAN = QtGui.QTreeWidgetItem(treeDATE)
treeSCAN.setFlags(QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsUserCheckable)
treeSCAN.setCheckState(0, QtCore.Qt.Unchecked)
treeSCAN.setText(0, s_name)
treeSCAN.setText(1, ser['time'])
treeSCAN.setText(2, ser['number'])
treeSCAN.setText(3, 'count')
【问题讨论】:
标签: python pyqt pyqt4 qtreewidget qcheckbox