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

2020-01-10  本文已影响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))
                

上一篇下一篇

猜你喜欢

热点阅读