Source code for pyqtgraph.parametertree.parameterTypes.numeric

from .basetypes import WidgetParameterItem
from ...widgets.SpinBox import SpinBox

[docs]class NumericParameterItem(WidgetParameterItem): """ Subclasses `WidgetParameterItem` to provide the following types: ========================== ============================================================= **Registered Types:** int Displays a :class:`SpinBox <pyqtgraph.SpinBox>` in integer mode. float Displays a :class:`SpinBox <pyqtgraph.SpinBox>`. ========================== ============================================================= """ def makeWidget(self): opts = self.param.opts t = opts['type'] defs = { 'value': 0, 'min': None, 'max': None, 'step': 1.0, 'dec': False, 'siPrefix': False, 'suffix': '', 'decimals': 3, } if t == 'int': defs['int'] = True defs['minStep'] = 1.0 for k in defs: if k in opts: defs[k] = opts[k] if 'limits' in opts: defs['min'], defs['max'] = opts['limits'] w = SpinBox() w.setOpts(**defs) w.sigChanged = w.sigValueChanged w.sigChanging = w.sigValueChanging return w def updateDisplayLabel(self, value=None): if value is None: value = self.widget.lineEdit().text() super().updateDisplayLabel(value) def showEditor(self): super().showEditor() self.widget.selectNumber() # select the numerical portion of the text for quick editing def limitsChanged(self, param, limits): self.widget.setOpts(bounds=limits) def optsChanged(self, param, opts): super().optsChanged(param, opts) sbOpts = {} if 'units' in opts and 'suffix' not in opts: sbOpts['suffix'] = opts['units'] for k, v in opts.items(): if k in self.widget.opts: sbOpts[k] = v self.widget.setOpts(**sbOpts) self.updateDisplayLabel()