属性编辑器
这个代码实现了一个属性编辑器 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
方法:- 创建应用程序实例,设置窗口图标,创建并显示主窗口。
- 进入应用程序事件循环。
代码逻辑
- 导入所需模块:导入标准库、第三方库和项目特定模块。
- 定义 ScalableGroup 类:自定义参数组,用于自动生成子参数。
- 定义 TreeEdit 类:从
Properties
类中提取信息并根据树视图进行格式化。 - 定义 PropEdit 类:属性编辑器的主要 GUI 窗口。
- 定义 PropSelector 类:属性选择器 GUI,用于选择和管理键列表。
- 定义主函数:创建并启动应用程序。
- 运行主程序:检查是否在交互模式下运行,如果不是,则运行主程序。
运行流程概述
- 启动应用程序:创建
QApplication
实例,并设置窗口图标。 - 创建 PropEdit 实例:初始化属性编辑器,并显示主窗口。
- 管理属性树:通过参数树视图和按钮与属性对象交互,更新、保存、加载和删除属性条目。
- 进入事件循环:应用程序进入事件循环,等待用户交互。