【问题标题】:Python QtreeWidget: return tree hierarchyPython QtreeWidget:返回树层次结构
【发布时间】:2009-12-01 17:09:30
【问题描述】:

我在尝试获取小部件树的分层视图时陷入困境。

代码运行良好,并生成了这样一棵漂亮的树:

ROOT(Animal): 
| 
| 
|___Not extinct:
.         |                       (red)
.         |_____BIRD--------------(blue)
.         |                       (green)
          | 
          |                       (red)
          |_____Mammal------------(blue)
          |                       (green)
          | 
          |                       (red)
          |_____Reptile-----------(blue)
                                  (green)

这是带有树层次结构的代码:

def myTreeWDG(self):
    ....
    """define tree"""
    self.obj_animalTreeWDG = QtGui.QTreeWidget(self.obj_viewGroupBox)
    self.obj_animalTreeWDG.setGeometry(QtCore.QRect(10, 20, 191, 131))
    self.obj_animalTreeWDG.setObjectName("obj_animalTreeWDG")
    """ROOT: animal"""
    obj_parent1 = QtGui.QTreeWidgetItem(self.obj_animalTreeWDG)
    """not extinct:"""
    obj_childView1_1 = QtGui.QTreeWidgetItem()
    obj_parent1.addChild(obj_childView1_1)
    """bird"""
    obj_childView1_1_1 = QtGui.QTreeWidgetItem()
    obj_childView1_1.addChild(obj_childView1_1_1)
    """3: red, blue, green"""
    total=3
    self.insert_treeLeaves(total,obj_childView1_1_1)
    """mamal"""
    obj_childView1_1_2 = QtGui.QTreeWidgetItem()
    obj_childView1_1.addChild(obj_childView1_1_2)
    """3: red, blue, green"""
    total=3
    self.insert_treeLeaves(total,obj_childView1_1_2) 
    """reptile"""
    obj_childView1_1_3 = QtGui.QTreeWidgetItem()
    obj_childView1_1.addChild(obj_childView1_1_3)
    """3: red, blue, green"""
    total=3
    self.insert_treeLeaves(total,obj_childView1_1_3) 
    """connect event"""
    QtCore.QObject.connect(self.obj_animalTreeWDG, QtCore.SIGNAL('itemClicked(QTreeWidgetItem*, int)'), self.obj_treeViewInput)

以下是将叶子添加到树中的代码:

def insert_treeLeaves(self,total,tree_directParent):
    for i in range(0,total):
        """leaves with color name"""
        tree_child_leaf = QtGui.QTreeWidgetItem()
        tree_directParent.addChild(tree_child_leaf)

然后,我们有一个函数可以告诉我们每次点击树的时间,以及点击的位置:

def obj_treeViewInput(self,item,col):
    print "obj _Qtree : pressed"
    print "name:" item.text(col)

问题是,我们如何获得触摸的叶子(红色)是否属于鸟或其他父亲,即如何获得以下输出给一些鼠标点击: 动物 - 未灭绝 - 哺乳动物 - (红色)。

非常感谢所有 cmets 和建议。

【问题讨论】:

    标签: python qt treeview pyqt hierarchy


    【解决方案1】:

    每个 QtreeWidgetItem 中的方法如何,您可以在其中打印该项目的路径。

    在此方法中,您可以使用递归来获取项目父项的完整路径(您有一个“QTreeWidgetItem * parent () const”方法来执行此操作)并将当前项目的文本添加到其父项的路径!当一个项目没有任何父项时,您停止递归。

    希望我能理解您的问题,这对您有所帮助!

    你有自己的 QTreeWidgetItem 类吗?您可以使用特定角色来实现此目的...

    【讨论】:

    • 你好安迪...谢谢你的建议。仍然没有时间实施它。希望找到解决办法,然后在这里发帖。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 1970-01-01
    相关资源
    最近更新 更多