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