数据流图片流监视器

该代码使用 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 方法

    • 返回组件的建议大小。

运行流程

  1. 创建 ParameterBoxImageDataBoxCamPropsBox 的实例。
  2. 定时器触发,调用 setNewData 方法从数据流中获取新数据并更新显示。
  3. 用户右键单击组件,显示上下文菜单。
  4. 用户选择订阅管理或数据选择选项,打开相应的对话框。
  5. 用户在对话框中编辑订阅或选择数据,更新组件显示。