电场偏移补偿辅助工具
该代码实现了一个用于补偿电场漂移的辅助工具(
CompensationHelper)。该工具通过使用 PyQt6 库构建图形用户界面,帮助用户进行电压扫描、数据管理和图形绘制。代码包含多个类,每个类负责特定的功能模块,例如图形绘制、控制参数设置和实验序列管理。代码概述
该代码实现了一个用于补偿电场漂移的辅助工具(CompensationHelper)。该工具通过使用 PyQt6 库构建图形用户界面,帮助用户进行电压扫描、数据管理和图形绘制。代码包含多个类,每个类负责特定的功能模块,例如图形绘制、控制参数设置和实验序列管理。
依赖库
sys,time,numpy:标准库,用于系统操作、时间管理和数值计算。PyQt6:用于构建 GUI 应用程序。pyqtgraph:用于绘制图形。balic.servers和balic.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)
总结
该代码实现了一个用于补偿电场漂移的辅助工具。通过图形用户界面,用户可以进行电压扫描、数据管理和图形绘制。代码包含多个类,每个类负责特定的功能模块,例如图形绘制、控制参数设置和实验序列管理。