美文网首页
PYQT5(14)pyqt5 QTreeWidget使用集锦(如

PYQT5(14)pyqt5 QTreeWidget使用集锦(如

作者: 弗兰克万岁 | 来源:发表于2020-01-10 23:42 被阅读0次

    比较好的教程:https://zhuanlan.zhihu.com/p/36033317

    image

    【简介】

    PyQT5中 QTreeWidget 例子

    
    from PyQt5.QtWidgets import *
    import sys
    
    class TreeWidgetDemo(QMainWindow):
    def **init**(self, parent=None):
    super(TreeWidgetDemo, self).**init**(parent)
    self.setWindowTitle('TreeWidget 例子')
    self.tree = QTreeWidget()
    # 设置列数
    self.tree.setColumnCount(2)
    # 设置头的标题
    self.tree.setHeaderLabels(['Key', 'Value'])
    # 设置自适应宽度
    self.header().setSectionResizeMode(QHeaderView.ResizeToContents)
    root = QTreeWidgetItem(self.tree)
    root.setText(0, 'root')
    root.setText(1, '0')
    
        child1 = QTreeWidgetItem(root)
        child1.setText(0, 'child1')
        child1.setText(1, '1')
    
        child2 = QTreeWidgetItem(root)
        child2.setText(0, 'child2')
        child2.setText(1, '2')
    
        child3 = QTreeWidgetItem(root)
        child3.setText(0, 'child3')
        child3.setText(1, '3')
    
        child4 = QTreeWidgetItem(child3)
        child4.setText(0, 'child4')
        child4.setText(1, '4')
    
        child5 = QTreeWidgetItem(child3)
        child5.setText(0, 'child5')
        child5.setText(1, '5')
    
        self.tree.addTopLevelItem(root)
        self.tree.clicked.connect(self.onTreeClicked)
    
        self.setCentralWidget(self.tree)
    
    def onTreeClicked(self, qmodelindex):
        item = self.tree.currentItem()
        print("key=%s ,value=%s" % (item.text(0), item.text(1)))
    
    

    启动一下试试

    if **name** == '**main**':
    app = QApplication(sys.argv)
    tree = TreeWidgetDemo()
    tree.show()
    sys.exit(app.exec_())
    

    分析判断是否是父项

    def onTreeClicked(self, qmodelindex):
        item = self.tree.currentItem()
         if item.parent()==None:
            print("key=%s ,value=%s" % (item.text(0), item.text(1)))
            #None表示是最高一级
    
    

    信号触发条件:

    activated(QModelIndex) 当用户激活index指定的项目时,发出此信号
    clicked(QModelIndex) 左键单击鼠标按钮时,发出此信号
    collapsed(QModelIndex) 当索引指定的项目折叠时,发出信号。
    currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)当前项目更改时,发出信号
    doubleClicked(QModelIndex) 双击鼠标按钮时,发出此信号
    entered(QModelIndex) 当鼠标光标进入index指定的项目时,发出此信号
    expanded(QModeldelIndex) 当索引指定的项目展开时,发出信号
    iconSizeChanged(QSize) 在视图可见时设置此图标大小时,发出此信号
    itemActivated(QTreeWidgetItem*,int) 当用户通过单击,双击或按特殊键(例如,Enter)激活项目时,发出信号
    itemChanged(QTreeWidgetItem*,int) 当指定项目中列的内容发生更改时,发出信号
    itemClicked(QTreeWidgetItem*,int) 当用户在窗口内单击时,发出信号。
    itemCollapsed(QTreeWidgetItem*) 折叠指定项目时,发出信号
    itemDoubleClicked(QTreeWidgetItem*,int) 当用户在窗口内双击时,发出信号
    itemEntered(QTreeWidgetItem*,int) 当鼠标光标进入指定列上的项目时,发出信号
    itemExpanded(QTreeWidgetItem*) 扩展指定项目时,发出信号
    itemPressed(QTreeWidgetItem*,int) 当用户在窗口内按下鼠标按钮时,发出信号。
    itemSelectionChange() 当树构件中的选择发生变化时,发出信号
    pressed(QModelIndex) 按下鼠标按钮时,发出信号
    viewportEntered() 当鼠标光标进入控件时,发出信号
    

    获取父项某一个column的内容和

    
        def getLocation(self,item):
    
            if item.parent():
                temp = item.parent().text(0)
                parent=self.getLocation(item.parent())
                if parent :
                    res=os.path.join(parent,temp)
    
                    return res
                else:
                    return temp
            else:
                return 0
    #举例,text(0)是文件夹的名称,那么递归后就可以获取全部路径
    

    右键菜单

         def __init__(self):
            self.setContextMenuPolicy(Qt.CustomContextMenu)#打开右键菜单的策略
            self.customContextMenuRequested.connect(self.rightClickMenu)#绑定事件
    
        def rightClickMenu(self,pos):
            try:
                self.contextMenu = QMenu()#创建对象
                self.actionA = self.contextMenu.addAction(u'动作')#添加动作
                self.actionA = self.contextMenu.addAction(u'动作b')
                self.actionA.triggered.connect(self.actionHandler)
                self.contextMenu.exec_(self.mapToGlobal(pos))#随指针的位置显示菜单
                self.contextMenu.show()#显示
            except Exception as e:
                print(e)
        def actionHandler(self):
            print(self.currentItem().text(0))
    
    

    删除子节点下的所有item

                    item=self.currentItem()
                    for i in range(0,item.childCount()):
                        print(item.child(item.childCount()-1).text(0))
                        item.removeChild(item.child(item.childCount()-1))
                    
    
    

    相关文章

      网友评论

          本文标题:PYQT5(14)pyqt5 QTreeWidget使用集锦(如

          本文链接:https://www.haomeiwen.com/subject/ngfvactx.html