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))