code: def optsChanged(self, param, opts):
      try:
          super().optsChanged(param, opts)
      except AttributeError:
          # This may trigger while building the parameter before the widget is fully constructed.
          # This is fine, since errors are from the parent scope which will stabilize after the widget is
          # constructed anyway
          pass
      span = opts.get("span", None)
      if span is None:
          step = opts.get("step", 1)
          start, stop = opts.get("limits", param.opts["limits"])
          # Add a bit to 'stop' since python slicing excludes the last value
          span = np.arange(start, stop + step, step)
      precision = opts.get("precision", 2)
      if precision is not None:
          span = span.round(precision)
      self.span = span
      self.charSpan = np.char.array(span)
      w = self.slider
      w.setMinimum(0)
      w.setMaximum(len(span) - 1)
      if "suffix" in opts:
          self.setSuffix(opts["suffix"])
  
file_path: pyqtgraph/pyqtgraph/parametertree/parameterTypes/slider.py
imports: import numpy
  from ...Qt import QtCore, QtWidgets
  from ..Parameter import Parameter
  from .basetypes import Emitter, WidgetParameterItem
label_desc: Use image node_id 7 for calling the SliderParameterItem obj's underlying member method code with example usage: obj.optsChanged(param, opts) without return types