数据流图片流监视器
该代码使用 PyQt6 库构建了一个 GUI 应用,用于显示和编辑数据流、图像数据和相机属性。代码主要定义了一些自定义窗口小部件(widgets),包括参数显示框、图像数据框和相机属性框,并实现了上下文菜单、订阅管理和数据选择对话框等功能。
概要
该代码使用 PyQt6 库构建了一个 GUI 应用,用于显示和编辑数据流、图像数据和相机属性。代码主要定义了一些自定义窗口小部件(widgets),包括参数显示框、图像数据框和相机属性框,并实现了上下文菜单、订阅管理和数据选择对话框等功能。
主要类和功能
ParameterBox
该类继承自 BFrame
,用于显示单个参数。它包括以下功能:
- 初始化:设置框架样式、获取属性和数据流名称,并初始化显示标签。
- 数据更新:使用定时器定期从数据流中获取新数据,并更新显示值。
- 上下文菜单:右键单击时显示上下文菜单,包括订阅管理和数据选择功能。
- 订阅管理:打开订阅管理窗口以编辑订阅。
- 数据选择:打开数据选择对话框以选择要显示的数据。
ImageDataBox
该类继承自 BFrame
,用于显示图像数据。它包括以下功能:
- 初始化:设置框架样式、获取属性,并初始化显示框。
- 上下文菜单:右键单击时显示上下文菜单,包括订阅管理功能。
- 订阅管理:打开订阅管理窗口以编辑订阅。
- 数据更新:通过设置新数据的方法更新显示框内容。
CamPropsBox
该类继承自 ImageDataBox
,用于显示相机属性。它包括以下功能:
- 初始化:获取相机名称和属性子树,并设置定时器定期更新数据。
- 上下文菜单:右键单击时显示上下文菜单,包括属性和相机选择功能。
- 属性窗口:打开属性选择窗口以编辑相机属性。
- 相机选择窗口:打开相机选择窗口以选择要显示的相机。
- 数据更新:根据当前相机和配置获取并显示相机属性。
DataBox
这是一个简单的用于显示标签和值的框,继承自 QWidget
。它主要包括:
- 初始化:设置布局,添加标签和值的显示。
- 大小提示:返回组件的建议大小。
详细描述
ParameterBox
类
__init__
方法:- 初始化框架样式和宽度。
- 获取参数属性和数据流名称。
- 初始化显示标签和值标签,并设置布局。
- 设置上下文菜单策略和定时器。
setNewData
方法:- 检查数据流中是否有新数据。
- 更新显示值。
openMenu
方法:- 打开上下文菜单,包含订阅管理和数据选择选项。
dataSelectDialog
方法:- 打开数据选择对话框,允许用户选择要显示的数据。
subscribe_window
方法:- 打开订阅管理窗口,允许用户编辑订阅。
updateSubscription
方法:- 更新数据流订阅。
updateDataLists
方法:- 更新数据列表和显示标签。
ImageDataBox
类
__init__
方法:- 初始化框架样式和宽度。
- 获取属性并初始化显示框。
- 设置上下文菜单策略。
openMenu
方法:- 打开上下文菜单,包含订阅管理选项。
subscribe_window
方法:- 打开订阅管理窗口,允许用户编辑订阅。
dataSelectDialog
方法:- 打开数据选择对话框,允许用户选择要显示的数据。
setNewData
方法:- 更新显示框内容。
CamPropsBox
类
__init__
方法:- 获取相机名称和属性子树。
- 设置定时器定期更新数据。
openMenu
方法:- 打开上下文菜单,包含属性和相机选择选项。
props_window
方法:- 打开属性选择窗口,允许用户编辑相机属性。
cams_window
方法:- 打开相机选择窗口,允许用户选择相机。
setNewData
方法:- 更新相机属性显示。
DataBox
类
__init__
方法:- 设置布局,添加标签和值显示。
sizeHint
方法:- 返回组件的建议大小。
运行流程
- 创建
ParameterBox
、ImageDataBox
和CamPropsBox
的实例。 - 定时器触发,调用
setNewData
方法从数据流中获取新数据并更新显示。 - 用户右键单击组件,显示上下文菜单。
- 用户选择订阅管理或数据选择选项,打开相应的对话框。
- 用户在对话框中编辑订阅或选择数据,更新组件显示。