网站首页 > 精选文章 / 正文
1.QTreeWidget简介
PyQt5中QTreeWidget是QTreeVIew的子类提供了简化的接口来创建带有静态列的树形结构,QTreeWidget提供了默认的模型,并且自动处理数据的展示。
2.QTreeWidget案例
import sys
from PyQt5.QtWidgets import QApplication, QTreeWidget, QMainWindow, QTreeWidgetItem
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon
class QTreeWidgetDemo(QMainWindow):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
self.setWindowTitle('QTreeWidget演示')
self.resize(600, 400)
# 创建树控件
tree = QTreeWidget()
# 设置树的列
tree.setColumnCount(2)
# 设置列标签名
tree.setHeaderLabels(['key', 'value'])
tree.setColumnWidth(0, 150)
# 创建根节点
root = QTreeWidgetItem() # 创建节点
root.setText(0, '根节点') # 设置节点名称
root.setIcon(0, QIcon('../MenuBar/img/open.png')) # 设置节点图标
tree.addTopLevelItem(root)
child1 = QTreeWidgetItem(root)
child1.setText(0, '子节点1')
child1.setText(1, '子节点1数据') # 设置第二列数据
child1.setIcon(0, QIcon('../MenuBar/img/new.png'))
child1.setCheckState(0, Qt.Unchecked) # 设置节点复选框
child2 = QTreeWidgetItem(root)
child2.setText(0, '子节点2')
child2.setText(1, '子节点2数据') # 设置第二列数据
child2.setIcon(0, QIcon('../MenuBar/img/new.png'))
child2.setCheckState(0, Qt.Unchecked) # 设置节点复选框
child3 = QTreeWidgetItem(child2)
child3.setText(0, '子节点2.1')
child3.setText(1, '子节点2.1数据') # 设置第二列数据
child3.setIcon(0, QIcon('../MenuBar/img/new.png'))
child3.setCheckState(0, Qt.Unchecked) # 设置节点复选框
tree.expandAll() # 默认全部展开
tree.itemClicked.connect(self.on_item_clicked)
tree.itemActivated.connect(self.on_item_activated)
tree.itemDoubleClicked.connect(self.on_item_double_clicked)
self.setCentralWidget(tree)
def on_item_clicked(self, item, column):
print('clicked:', item, column)
def on_item_activated(self, item, column):
print('activated:', item, column)
def on_item_double_clicked(self, item, column):
print('double clicked:', item, column)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = QTreeWidgetDemo()
w.show()
app.exec()
3.运行结果
4.常用方法
方法 | 描述 |
addTopLevelItem(QTreeWidgetItem *item) | 向 QTreeWidget 添加一个根节点 |
addTopLevelItems(items: Iterable[QTreeWidgetItem]) | 向 QTreeWidget 添加多个根节点 |
insertTopLevelItem(index: int, item: QTreeWidgetItem) | 在指定位置插入一个根节点 |
insertTopLevelItems(index: int, items: List[QTreeWidgetItem]) | 在指定位置插入多个根节点 |
takeTopLevelItem(index: int) | 移除并返回指定索引的根节点 |
setVisible(Bool) | 设置QTreeWidget是否可见 |
isVisible() | 获取QTreeWidget是否可见 |
invisibleRootItem() | 返回不可见的根节点,用于管理顶层项目 |
clear() | 清除所有项 |
currentItem() | 返回当前选中的项 |
setCurrentItem(item: QTreeWidgetItem) | 设置当前选中的项目 |
itemAt(self, p: QPoint) itemAt(self, ax: int, ay: int) | 返回指定位置的项目 |
findItems(const QString &text, Qt:MatchFlags flags) | 查找与给定字符串匹配的所有项: Qt.MatchExactly:完全匹配 Qt.MatchFixedString:与 MatchExactly 类似,但不区分大小写 Qt.MatchContains:文本包含指定的字符串 Qt.MatchStartsWith:文本以指定的字符串开头 Qt.MatchEndsWith:文本以指定的字符串结尾 Qt.MatchRecursive:递归搜索所有子项 Qt.MatchCaseSensitive:区分大小写的匹配 Qt.MatchWrap:如果没有找到匹配项,则从头开始搜索 Qt.MatchWildcard:支持通配符(如 * 和 ?)的匹配 Qt.MatchRegExp:使用正则表达式进行匹配 |
itemAbove(QTreeWidgetItem *item) | 返回给定项目之上的项目 |
itemBelow(QTreeWidgetItem *item) | 返回给定项目之下的项目 |
itemFromIndex(const QModelIndex &index) | 从模型索引返回项 |
itemWidget(QTreeWidgetItem *item, int column) | 返回指定项指定列中的小部件 |
removeItemWidget(QTreeWidgetItem *item, int column) | 移除放置在给定项指定列的小部件 |
selectedItems() | 返回所有选中的项 |
setColumnCount(int columns) | 设置列数 |
setHeaderHidden(bool) | 设置是否隐藏头部 |
isHeaderHidden() | 返回是否隐藏头部 |
setHeaderLabels(labels: typing.Iterable[str]) | 设置头部标签 |
setHeaderLabel(alabel: str) | 设置头部标签(仅适用于单列) |
setHeaderWidth(int section, int width) | 设置头部宽度 |
setSortingEnabled(bool) | 设置是否启用排序 |
sortItems(int column, Qt.SortOrder order) | 对指定列的内容进行排序: sortItems.AscendingOrder:升序排序 sortItems.DescendingOrder:降序排序 |
setRootIsDecorated(bool) | 设置是否装饰根节点 |
topLevelItemCount() | 返回根节点的数量 |
topLevelItem(index: int) | 返回指定索引的根节点 |
setAllColumnsShowFocus(bool) | 设置当项获得焦点时是否显示所有列 |
allColumnsShowFocus() | 返回是否显示所有列 |
setAutoScroll(bool) | 设置是否启用自动滚动 |
autoScroll() | 返回是否启用了自动滚动 |
columnCount() | 返回列数 |
setDragDropMode(DragDropMode mode) | 设置拖放模式 |
dragDropMode() | 返回拖放模式 |
setDragEnabled(bool) | 设置是否启用拖放 |
dragEnabled() | 返回是否启用了拖放 |
setDropIndicatorShown(bool) | 设置是否显示下拉指示器 |
dropIndicatorShown() | 返回是否显示下拉指示器 |
setUniformRowHeights(bool) | 设置是否使用统一的行高 |
uniformRowHeights() | 返回是否使用统一的行高 |
setWordWrap(bool enable) | 设置是否启用文本换行 |
wordWrap() | 返回是否启用了文本换行 |
expandAll() | 展开所有项 |
collapseAll() | 折叠所有项 |
expand(index: QModelIndex) | 展开指定索引对应的项,通过indexFromItem方法获取索引 |
collapse(index: QModelIndex) | 折叠指定索引对应的项,通过indexFromItem方法获取索引 |
setSelectionMode(mode) | 设置选择模式(单选、多选等): QAbstractItemView.NoSelection:不允许选择。 QAbstractItemView.SingleSelection:一次只允许选择一个单元格。 QAbstractItemView.MultiSelection:允许选择多个单元格。 QAbstractItemView.ExtendedSelection:允许使用 Shift 或 Ctrl 键进行扩展选择。 QAbstractItemView.ContiguousSelection:只允许选择连续的项目 |
setEditTriggers(QAbstractItemView.EditTriggers) | QAbstractItemView.NoEditTriggers:禁止编辑 QAbstractItemView.DoubleClicked:双击编辑 QAbstractItemView.SelectedClicked:点击选中项时触发编辑 QAbstractItemView.AnyKeyPressed:按下任何键时触发编辑 QAbstractItemView.AllEditTriggers:启用所有编辑触发条件 组合触发条件时,条件之间用 | 隔开。 |
setAlternatingRowColors(bool enable) | 设置是否使用交替行颜色 |
alternatingRowColors() | 返回是否使用交替行颜色 |
setAnimated(bool enable) | 设置是否启用动画 |
isAnimated() | 返回是否启用了动画 |
setItemsExpandable(bool expandable) | 设置项是否可展开 |
isItemsExpandable() | 返回项是否可展开 |
setExpandsOnDoubleClick(bool expand) | 设置是否在双击时展开项 |
expandsOnDoubleClick() | 返回是否在双击时展开项 |
removeChild(child: Optional[QTreeWidgetItem]) | 删除指定子项 |
4.常用信号
方法 | 描述 |
itemClicked(QTreeWidgetItem *item, int column) | 当用户双击一个项或者按回车键激活一个项时触发:item: 被单击的项,column: 被单击的列 |
itemActivated(QTreeWidgetItem *item, int column) | 当用户双击一个项或者按回车键激活一个项时触发:item: 被激活的项,column: 被激活的列 |
itemChanged(QTreeWidgetItem *item, int column) | 当一个项的内容发生改变时触发:item: 发生改变的项,column: 发生改变的列 |
itemCollapsed(QTreeWidgetItem *item) | 当一个项被折叠时触发,item: 被折叠的项 |
itemDoubleClicked(QTreeWidgetItem *item, int column) | 当用户双击一个项时触发:item: 被双击的项,column: 项被双击的列 |
itemExpanded(QTreeWidgetItem *item) | 当一个项被展开时触发:item: 被展开的项 |
itemPressed(QTreeWidgetItem *item, int column) | 当用户按下鼠标键时发出:item: 被按下的项,column: 项被按下的列 |
currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous) | 当前选中的项发生变化时发出:current: 新的当前选中项,previous: 之前的当前选中项 |
itemChanged(QTreeWidgetItem *item, int column) | 当一个项的内容或属性发生改变时发出:item: 发生改变的项,column: 发生改变的列 |
itemEntered(QTreeWidgetItem *item, int column) | 当鼠标进入一个项时发出:item: 鼠标进入的项,column: 项所在的列 |
itemSelectionChanged() | 当项的选择状态发生变化时发出 |
Tags:show columns
- 上一篇:MySQL 常用脚本
- 下一篇:Doris语法笔记
猜你喜欢
- 2025-01-12 c#设计一个文件夹加密软件
- 2025-01-12 查询 MySQL 字段注释的 5 种方法
- 2025-01-12 SQL SERVER 2014如何跟踪程序执行哪些SQL语句
- 2025-01-12 部署Enterprise Architect生成的SQL语句
- 2025-01-12 14 个 SQL 拿来就用语句实例!
- 2025-01-12 mysql1366错误:字符集冲突导致插入数据异常,解决方案
- 2025-01-12 Doris语法笔记
- 2025-01-12 MySQL 常用脚本
- 2025-01-12 MYSQL中数据库服务器、连接、数据库、表、字段的字符编码
- 2025-01-12 Bootstrap-table 使用总结