数据类控件
该代码实现了三个自定义的GUI控件类,用于处理实验中的浮点数、布尔值和组合框参数。代码使用了
balic.GUI.simple_defaults
模块中的FloatManager
、BoolManager
和ComboManager
作为基类,并扩展了它们的功能。主要类包括:FloatBox
、BoolBox
和ComboBox
。类和方法
FloatBox
类
FloatBox
继承自 FloatManager
,用于处理实验中的浮点数参数。
方法:
__init__(self, props, value, parent=None, **kwargs)
:初始化浮点数控件。props
:属性对象,用于存储和管理配置数据。value
:初始值。parent
:父窗口。**kwargs
:其他关键字参数,包括参数名称等。- 调用父类的初始化方法,并传递参数名称。
updateValue(self, value)
:更新实验中的对应参数。value
:新的浮点数值。- 更新控件的值,并在属性对象中设置对应的参数值和最后设置的参数信息。
BoolBox
类
BoolBox
继承自 BoolManager
,用于处理实验中的布尔值参数。
方法:
updateValue(self, value)
:更新实验中的对应参数。value
:新的布尔值。- 更新控件的值,并在属性对象中设置对应的参数值和最后设置的参数信息。
updateCheckbox(self)
:更新复选框状态。- 如果属性中的值与当前复选框的状态不一致,则更新复选框的状态。
ComboBox
类
ComboBox
继承自 ComboManager
,用于处理实验中的组合框参数。
方法:
updateValue(self, value)
:更新实验中的对应参数。value
:新的组合框值。- 将值转换为字符串列表中的对应值。
- 更新控件的值,并在属性对象中设置对应的参数值和最后设置的参数信息。
类的详细说明
FloatBox
类
FloatBox
类用于处理实验中的浮点数参数。它继承自FloatManager
,并扩展了其功能,以便在属性对象中设置参数值。
class FloatBox(FloatManager):
''' Box for handling the attribute argument
Args:
argument:(NumberValue)
points to the argument in the experiment
unit:(str)
unit string
display_multiplier:(float)
multiplication factor for the unit
'''
def __init__(self, props, value, parent=None, **kwargs):
super().__init__(props, parent, parName=kwargs['name'], **kwargs)
def updateValue(self, value):
'''Update the corresponding argument in Experiment
Args:
value:(type needs to correspont the to the argument type it represents
'''
self.value = value*self.display_multiplier
if self._props:
self._props.set(self.parName, value*self.display_multiplier)
self._props.set('last_set', self.parName+': '+str(value))
BoolBox
类
BoolBox
类用于处理实验中的布尔值参数。它继承自BoolManager
,并扩展了其功能,以便在属性对象中设置参数值。
class BoolBox(BoolManager):
''' GUI for boolean values
KWArgs:
parName:(str)
name of the parameter
value:(BoolValue)
reference to the argument class
'''
def updateValue(self, value):
'''Update the corresponding argument in Experiment
Args:
value:(type needs to correspont the to the argument type it represents
'''
self.value = bool(value)
if self._props:
self._props.set(self.parName, bool(value))
self._props.set('last_set', self.parName+': '+str(value))
def updateCheckbox(self):
''' updates the spin box if properties have changed '''
val=self.value #the values in properties are in SI units. Non SI only on disp
if val != self.isChecked():
self.setChecked(val)
ComboBox
类
ComboBox
类用于处理实验中的组合框参数。它继承自ComboManager
,并扩展了其功能,以便在属性对象中设置参数值。
class ComboBox(ComboManager):
''' GUI for boolean values
KWArgs:
parName:(str)
name of the parameter
argument:(BoolValue)
reference to the argument class
'''
def updateValue(self, value):
'''Update the corresponding argument in Experiment
Args:
value:(type needs to correspont the to the argument type it represents
'''
value = self.stringlist[value]
self.value = value
if self._props:
self._props.set(self.parName, value)
self._props.set('last_set', self.parName+': '+str(value))
总结
该代码实现了三个自定义的GUI控件类:FloatBox
、BoolBox
和ComboBox
,用于处理实验中的不同类型的参数。这些类继承自相应的管理类,并扩展了它们的功能,以便在属性对象中设置和更新参数值。