属性编辑器

这个代码实现了一个属性编辑器 GUI,用于管理和编辑属性树。

ScalableGroup 类

ScalableGroup 类是一个自定义的参数组,用于自动生成两个子参数,这两个子参数始终互为倒数。

初始化方法
  • __init__ 方法
    • 初始化参数组,并设置组类型、添加文本和添加列表。
    • 调用基类 GroupParameter 的初始化方法。
添加新参数方法
  • addNew 方法
    • 根据参数类型(字符串、浮点数或整数)添加新的子参数。
    • 设置新子参数的初始值和属性。

TreeEdit 类

TreeEdit 类用于从 Properties 类中提取信息并根据树视图进行格式化。

初始化方法
  • __init__ 方法
    • 初始化类实例,设置父类和子树路径。
    • 从属性对象中提取条目,并创建参数组。
    • 连接参数组的状态变化信号到 change 方法。
解析字典方法
  • _parsedict 方法
    • 将字典格式化为可以在树视图中查看的格式。
    • 根据不同的数据类型(整数、布尔、字符串、浮点数、列表、字典)创建相应的参数条目。
更改参数方法
  • change 方法
    • 处理树视图中的任何更改。
    • 根据参数类型和变化的数据更新属性对象。
更新方法
  • _update_update_whole_tree 方法
    • 更新树视图中选定条目或整个树视图。
    • 根据属性对象中的数据重新生成参数条目。

PropEdit 类

PropEdit 类是属性编辑器的主要 GUI 窗口,用于管理属性树。

初始化方法
  • __init__ 方法
    • 初始化类实例,设置子树路径。
    • 创建布局和参数树视图。
    • 添加更新、删除、保存和加载按钮,并连接相应的槽函数。
更新、保存、加载和删除方法
  • update 方法
    • 更新参数树视图。
  • save 方法
    • 将当前属性保存到文件。
  • load 方法
    • 从文件加载属性并更新参数树视图。
  • delete 方法
    • 删除当前选定的参数条目。

PropSelector 类

PropSelector 类是属性选择器 GUI,用于从属性树中选择和管理键列表。

初始化方法
  • __init__ 方法
    • 初始化类实例,设置子树路径。
    • 创建布局和参数树视图。
    • 添加选择和删除按钮,并连接相应的槽函数。
选择和删除方法
  • select 方法
    • 从参数树视图中选择当前条目并更新键列表。
  • updateKeys 方法
    • 更新键列表视图。
  • delete_marked 方法
    • 删除当前选定的键条目。

主函数

  • main 方法
    • 创建应用程序实例,设置窗口图标,创建并显示主窗口。
    • 进入应用程序事件循环。

代码逻辑

  1. 导入所需模块:导入标准库、第三方库和项目特定模块。
  2. 定义 ScalableGroup 类:自定义参数组,用于自动生成子参数。
  3. 定义 TreeEdit 类:从 Properties 类中提取信息并根据树视图进行格式化。
  4. 定义 PropEdit 类:属性编辑器的主要 GUI 窗口。
  5. 定义 PropSelector 类:属性选择器 GUI,用于选择和管理键列表。
  6. 定义主函数:创建并启动应用程序。
  7. 运行主程序:检查是否在交互模式下运行,如果不是,则运行主程序。

运行流程概述

  1. 启动应用程序:创建 QApplication 实例,并设置窗口图标。
  2. 创建 PropEdit 实例:初始化属性编辑器,并显示主窗口。
  3. 管理属性树:通过参数树视图和按钮与属性对象交互,更新、保存、加载和删除属性条目。
  4. 进入事件循环:应用程序进入事件循环,等待用户交互。