我有QTreeWidget
嵌套的父子项:
Tree:
parent1:
childA1
childA2
childA3:
childB1
childB2:
childC1
使用:
allItems=[]
for i in range(Tree.topLevelItemCount()):
item=Tree.topLevelItem(i)
allItems.add(item)
我访问第一级项目“ A” :childA1, childA2 and childA3
。
现在,我迭代每个第一级项目“ A”以访问其子级-第二级项目“ B”:
for i in range(Tree.topLevelItemCount()):
item=Tree.topLevelItem(i)
for m in range(item.childCount()):
childItem=item.child(m)
allItems.add(childItem)
在第二层,我不知道下面是否有任何第三层项“ C”。如何确保函数向下扩展到嵌套项以下的深度,然后将这些项添加到allItems
列表中,直到到达末尾?
下面的代码创建QTreeWidget
带有嵌套项的代码。
Tree的getItemsRecursively()
方法扫描Tree,直到到达底部项目为止,并返回Tree中所有项目的列表。
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])
class Tree(QtGui.QTreeWidget):
def __init__(self, *args, **kwargs):
super(Tree, self).__init__()
for name in ['Item_A0', 'Item_A1', 'Item_A2']:
itemA=QtGui.QTreeWidgetItem([name])
self.addTopLevelItem(itemA)
if name=='Item_A1':
item_B0=QtGui.QTreeWidgetItem(['Item_B0'])
itemA.insertChild(0, item_B0)
itemA.insertChild(1, QtGui.QTreeWidgetItem(['Item_B1']))
item_C0=QtGui.QTreeWidgetItem(['Item_C0'])
item_B0.insertChild(0, item_C0)
item_B0.insertChild(0, QtGui.QTreeWidgetItem(['Item_C1']))
self.resize(360,240)
self.show()
def getItemsRecursively(self):
total=[]
def serchChildItem(item=None):
if not item: return
for m in range(item.childCount()):
childItem=item.child(m)
if not childItem: continue
total.append(childItem)
serchChildItem(childItem)
for i in range(self.topLevelItemCount()):
item=self.topLevelItem(i)
if not item: continue
total.append(item)
serchChildItem(item)
return total
tree=Tree()
total=tree.getItemsRecursively()
print 'Total number of Tree items: %s'%len(total)
sys.exit(app.exec_())
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句