python treewidget怎么用?python treewidget详细用法

在 Python 中,QTreeWidget 是 PyQt5/PyQt6 或 PySide2/PySide6 中用于创建树形控件的类,它提供了一种直观的方式来展示层级数据,比如文件目录、组织架构等。

下面我将详细介绍如何使用 QTreeWidget,包括基本用法、添加节点、设置信号槽、自定义样式等。

python实战之pywifi
加载中
python实战之pywifi

基本用法

示例:创建一个简单的树形控件

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTreeWidget, QTreeWidgetItem, QVBoxLayout
class TreeWidgetExample(QWidget):
    def __init__(self):
        super().__init__()
        self.init_ui()
    def init_ui(self):
        # 创建主布局
        layout = QVBoxLayout()
        # 创建 QTreeWidget
        self.tree_widget = QTreeWidget()
        self.tree_widget.setHeaderLabels(["Name", "Value"])
        # 添加根节点
        root_item = QTreeWidgetItem(self.tree_widget, ["Root"])
        # 添加子节点
        child1 = QTreeWidgetItem(root_item, ["Child 1", "Value 1"])
        child2 = QTreeWidgetItem(root_item, ["Child 2", "Value 2"])
        # 添加孙节点
        grandchild = QTreeWidgetItem(child1, ["Grandchild", "Value 3"])
        

python treewidget怎么用?python treewidget详细用法

# 展开根节点 root_item.setExpanded(True) # 将树形控件添加到布局中 layout.addWidget(self.tree_widget) # 设置窗口布局 self.setLayout(layout) self.setWindowTitle("QTreeWidget Example") self.resize(300, 200) if __name__ == "__main__": app = QApplication(sys.argv) window = TreeWidgetExample() window.show() sys.exit(app.exec_())

动态添加节点

你可以动态地向树中添加节点,例如根据用户操作或数据加载。

def add_child_to_item(parent_item, name, value=""):
    child = QTreeWidgetItem(parent_item, [name, value])
    return child
# 示例:向 root_item 添加新子节点
new_child = add_child_to_item(root_item, "New Child", "New Value")

设置信号槽

QTreeWidget 支持多种信号,

  • itemClicked:当用户点击某个项目时触发。
  • itemDoubleClicked:当用户双击某个项目时触发。
  • currentItemChanged:当前选中项改变时触发。

示例:处理点击事件

def on_item_clicked(item, column):
    print(f"Clicked item: {item.text(column)}")
self.tree_widget.itemClicked.connect(on_item_clicked)

python treewidget怎么用?python treewidget详细用法


自定义样式

你可以使用 QSS(Qt Style Sheets)来自定义 QTreeWidget 的外观。

示例:设置背景颜色和字体

self.tree_widget.setStyleSheet("""
    QTreeWidget {
        background-color: #f0f0f0;
        font-family: Arial;
        font-size: 12px;
    }
    QTreeWidget::item {
        padding: 5px;
    }
    QTreeWidget::item:selected {
        background-color: #0078d7;
        color: white;
    }
""")

加载数据到树形控件

假设你有一个嵌套的字典结构,可以递归地将其加载到树形控件中。

示例:从字典加载数据

def load_data_to_tree(tree_widget, data, parent_item=None):
    for key, value in data.items():
        if isinstance(value, dict):
            item = QTreeWidgetItem(parent_item, [key])
            load_data_to_tree(tree_widget, value, item)
        else:
            QTreeWidgetItem(parent_item, [key, str(value)])
# 示例数据
data = {
    "Root": {
        "Child 1": "Value 1",
        "Child 2": {
            "Grandchild 1": "Value 3",
            "Grandchild 2": "Value 4"
        }
    }
}
# 加载数据
load_data_to_tree(self.tree_widget, data)

python treewidget怎么用?python treewidget详细用法


禁用某些节点

你可以禁用某些节点,使其不可选。

child1.setFlags(child1.flags() & ~Qt.ItemIsSelectable)

排序节点

你可以对树形控件中的节点进行排序。

self.tree_widget.sortByColumn(0, Qt.AscendingOrder)

搜索节点

你可以遍历树形控件,查找特定节点。

def find_item(tree_widget, text):
    items = tree_widget.findItems(text, Qt.MatchExactly)
    return items
# 示例:查找名为 "Child 1" 的节点
found_items = find_item(self.tree_widget, "Child 1")
for item in found_items:
    print(f"Found item: {item.text(0)}")

QTreeWidget 是一个非常强大的控件,适合展示层级数据,通过结合信号槽、自定义样式和动态数据加载,你可以创建一个功能丰富且美观的树形控件。

如果你有更具体的需求(例如拖放操作、右键菜单等),可以进一步扩展 QTreeWidget 的功能。

首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/487586.html

(0)
dcp-9020cdn打印机不打印怎么办,兄弟dcp-9020cdn
上一篇 2026年7月12日 15:49
python treewidget怎么用?python treewidget详解
下一篇 2026年7月12日 15:54

相关推荐

  • 个人用户怎么选购虚拟主机?虚拟主机哪个牌子好

    个人用户选购虚拟主机时,应优先根据网站类型选择Linux系统的入门级共享主机用于博客展示,或选择支持PHP/MySQL的高性能套餐用于WordPress建站,核心在于平衡预算与扩展性,避免为用不到的资源付费,对于刚接触建站的朋友来说,虚拟主机(Web Hosting)就像是你在互联网上租下的第一块“数字宅基地……

    服务器运维 2026年5月27日
    3800
  • 服务器搭公众号教程,如何用服务器搭建公众号?

    搭建微信公众号后台服务器的核心在于获取服务器配置权限并实现接口对接,从而突破官方后台的功能限制,实现自动化回复、用户数据管理等高级功能,整个过程主要分为环境准备、服务器配置、平台接入及程序部署四个关键阶段,最关键的一步是确保服务器端口开放且域名解析正确,前期环境与资源准备在开始部署之前,必须具备基础的服务器环境……

    2026年3月10日
    14400
  • 服务器应用教程视频教程哪里有?服务器搭建实战教程推荐

    掌握服务器应用技能的核心在于“理论结合实践”,而通过系统化的服务器应用教程视频教程进行学习,是目前效率最高、门槛最低的路径,相比于枯燥的文档,视频教程能直观展示操作细节、故障排查过程以及最终效果,极大地缩短了从入门到精通的时间周期,对于初学者而言,学习的最终目的不应仅是通过考试,而是要具备独立搭建、维护和优化服……

    2026年3月28日
    8600
  • 服务器搭建iis步骤详解,服务器怎么搭建iis

    在Windows Server环境中,IIS(Internet Information Services)凭借其图形化界面管理与原生.NET框架支持,是搭建Web应用的首选方案,成功部署IIS服务器的核心在于精准配置角色服务、科学规划站点权限以及严谨的安全加固策略,这不仅能确保网站的高可用性,还能大幅降低后期运……

    2026年3月5日
    13200
  • 服务器开关大全集哪里找?服务器开关配置详细指南

    服务器开关操作直接决定业务系统的生存状态,核心结论在于:精准掌握服务器电源管理、服务控制及内核参数开关,是保障数据中心高可用性与业务连续性的基石,任何一次误操作或配置不当,都可能引发连锁故障,导致数据丢失或服务中断,服务器开关大全集不仅仅是操作指令的罗列,更是运维人员应对各类突发状况的决策树与执行手册,高效的管……

    2026年4月8日
    6800
  • 个人域名能注册企业邮箱吗,企业邮箱注册流程

    个人域名完全可以注册企业邮箱,且这是提升品牌专业度、实现资产私有化的最佳低成本方案,很多创业者或自由职业者常陷入一个误区,认为只有大公司才配拥有专属域名邮箱,或者觉得个人域名只能用来收发私人信件,这种认知偏差往往导致品牌形象在第一时间打折,当你使用 @qq.com 或 @163.com 发送邮件时,客户看到的不……

    2026年6月10日
    2500
  • 防火墙USG如何高效查看和配置端口映射设置?

    核心回答: 要在 USG(UniFi Security Gateway)防火墙上查看已配置的端口映射(端口转发),最直接有效的方式是登录 USG 的命令行界面(CLI),并使用命令 show port-forward status 或 show configuration commands | include……

    2026年2月5日
    15030
  • 服务器如何查看操作系统 | 服务器系统查询方法

    要查看服务器运行的操作系统,可以通过命令行工具或系统信息工具快速获取详细信息,这对于系统管理、安全维护和软件兼容性至关重要,服务器操作系统通常是Linux(如Ubuntu、CentOS)或Windows Server,核心方法包括使用内置命令查询系统信息,为什么需要查看服务器操作系统作为服务器管理员,了解当前操……

    2026年2月15日
    10900
  • gpu1080ti云服务器租用贵吗,gpu1080ti云服务器推荐

    购买GPU 1080Ti云服务器是低成本运行AI大模型、进行深度学习训练及渲染任务的优选方案,其核心优势在于极高的性价比与成熟的生态兼容性,特别适合预算有限但算力需求明确的个人开发者与中小企业,随着人工智能技术的普及,算力成本成为了制约许多初创团队和个人研究者发展的关键瓶颈,传统的云计算巨头虽然提供了强大的A1……

    2026年6月25日
    1600
  • 服务器最便宜云多少钱,新用户首年价格是多少?

    目前市场上,入门级云服务器的价格主要集中在10元至50元人民币/月之间,这通常是针对新用户的促销活动价,如果是按年付费,首年费用往往低至100元至300元左右,对于个人开发者、学生以及初创企业来说,这是目前云服务器能够触及到的最低门槛,关于服务器最便宜云多少钱这个问题,答案并非固定不变,它受到配置、厂商活动、购……

    2026年2月24日
    26500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注