电场偏移补偿辅助工具

该代码实现了一个用于补偿电场漂移的辅助工具(CompensationHelper)。该工具通过使用 PyQt6 库构建图形用户界面,帮助用户进行电压扫描、数据管理和图形绘制。代码包含多个类,每个类负责特定的功能模块,例如图形绘制、控制参数设置和实验序列管理。

代码概述

该代码实现了一个用于补偿电场漂移的辅助工具(CompensationHelper)。该工具通过使用 PyQt6 库构建图形用户界面,帮助用户进行电压扫描、数据管理和图形绘制。代码包含多个类,每个类负责特定的功能模块,例如图形绘制、控制参数设置和实验序列管理。

依赖库

  • sys, time, numpy:标准库,用于系统操作、时间管理和数值计算。
  • PyQt6:用于构建 GUI 应用程序。
  • pyqtgraph:用于绘制图形。
  • balic.serversbalic.GUI:自定义库,用于属性管理和 GUI 组件。

类和方法

CompensationHelper

CompensationHelper 继承自 BWidget,实现了电场补偿的主界面。

方法:

  • __init__(self, parent):初始化补偿助手,设置布局并添加绘图和控制小部件。

PlotWidget

PlotWidget 继承自 QFrame,实现了绘图窗口。

方法:

  • __init__(self, parent):初始化绘图窗口,创建每个陷阱轴的标签页和数据流名称。
  • constructScanRange(self):构建扫描范围,根据中心和跨度生成线性扫描范围。

TabWidget

TabWidget 继承自 QFrame,实现了每个陷阱轴的标签页。

方法:

  • __init__(self, name, _prop_root, datastream_names, n_yaxis=2, parent=None):初始化标签页,设置布局和按钮。
  • toggleDataTaking(self):切换数据管理器的状态(启动/暂停)。
  • setPlotDefaults(self):设置绘图的默认参数。
  • avModeSwitch(self):切换平均模式的状态。

ControlWidget

ControlWidget 继承自 QFrame,实现了控制窗口。

方法:

  • __init__(self, parent):初始化控制窗口,创建按钮和参数框。
  • run_all_fn(self, progress_callback=None):运行所有轴的扫描函数。
  • run_all(self):启动所有轴的扫描。
  • print_output(self):打印输出(未实现)。
  • task_done(self):任务完成时调用。
  • progress_fn(self, n):更新进度。
  • init_data_taking(self):初始化数据采集。

SingleAxisWidget

SingleAxisWidget 继承自 QFrame,实现了单个轴的扫描控制。

方法:

  • __init__(self, name, parent):初始化单个轴的扫描控制窗口,设置布局和按钮。
  • switch_tabs(self):切换标签页。
  • findIntersection(self):找到两个线性拟合结果的交点。
  • getFromDefaults(self):从默认值中获取补偿电压。
  • pushToDefaults(self):将补偿电压推送到默认值。
  • run_all_fn(self, progress_callback=None):运行所有扫描函数。
  • init_data_manager(self):初始化数据管理器。
  • start_scan(self):开始扫描。
  • progress_fn(self, n):更新进度。
  • run_done(self):扫描完成时调用。
  • handle_error(self, err_msg):处理错误。
  • clear(self):清除绘图。

CompVoltageScan

CompVoltageScan 继承自 QFrame,实现了电压扫描功能。

方法:

  • __init__(self, parent, axis_name):初始化电压扫描窗口,设置布局和按钮。
  • initGUI(self):初始化用户界面,创建控件和布局。
  • switchTabs(self):切换标签页。
  • constructScanRange(self):构建扫描范围。
  • initExperiment(self):初始化实验参数。
  • updateScan(self):更新扫描参数。
  • runExperimentSequence(self, progress_callback):运行实验序列。
  • stop(self):停止扫描。
  • run(self):启动扫描。
  • progress_fn(self, n):更新进度。
  • print_output(self, s):打印输出(未实现)。
  • thread_complete(self):线程完成时调用。
  • terminate(self):终止扫描。

辅助函数

find_or_add(box, text)

在组合框中查找或添加项目。

def find_or_add(box, text):
    """if it's in the box, set it, if not, add and set it"""
    idx = box.findText(text)
    if idx < 0:
        box.addItem(text)
        idx = box.findText(text)
    box.setCurrentIndex(idx)

总结

该代码实现了一个用于补偿电场漂移的辅助工具。通过图形用户界面,用户可以进行电压扫描、数据管理和图形绘制。代码包含多个类,每个类负责特定的功能模块,例如图形绘制、控制参数设置和实验序列管理。