数据类控件

该代码实现了三个自定义的GUI控件类,用于处理实验中的浮点数、布尔值和组合框参数。代码使用了balic.GUI.simple_defaults模块中的FloatManagerBoolManagerComboManager作为基类,并扩展了它们的功能。主要类包括:FloatBoxBoolBoxComboBox

类和方法

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控件类:FloatBoxBoolBoxComboBox,用于处理实验中的不同类型的参数。这些类继承自相应的管理类,并扩展了它们的功能,以便在属性对象中设置和更新参数值。