class_docstr: Widget for editing OBJECT parameters
code: def __init__(self, parent=None, param=None):
      super(ObjectWidget, self).__init__(parent)
  
      if param is None:
          self.param = ObjectParam("sphere", OBJECT["sphere"])
      else:
          self.param = param
  
      self.gb_c = QtWidgets.QGroupBox("Hide/Show %s" % self.param.name)
      self.gb_c.setCheckable(True)
      self.gb_c.setChecked(self.param.props["visible"])
      self.gb_c.toggled.connect(self.update_param)
  
      lL = []
      self.sp = []
      gb_c_lay = QtWidgets.QGridLayout()
      for nameV, minV, maxV, typeV, iniV in self.param.list_param:
          lL.append(QtWidgets.QLabel(nameV, self.gb_c))
          if typeV == "double":
              self.sp.append(QtWidgets.QDoubleSpinBox(self.gb_c))
              self.sp[-1].setDecimals(2)
              self.sp[-1].setSingleStep(0.1)
              self.sp[-1].setLocale(
                  QtCore.QLocale(QtCore.QLocale.English)
              )
          elif typeV == "int":
              self.sp.append(QtWidgets.QSpinBox(self.gb_c))
          self.sp[-1].setMinimum(minV)
          self.sp[-1].setMaximum(maxV)
          self.sp[-1].setValue(iniV)
  
      # Layout
      for pos in range(len(lL)):
          gb_c_lay.addWidget(lL[pos], pos, 0)
          gb_c_lay.addWidget(self.sp[pos], pos, 1)
          # Signal
          self.sp[pos].valueChanged.connect(self.update_param)
  
      self.gb_c.setLayout(gb_c_lay)
  
      vbox = QtWidgets.QVBoxLayout()
      hbox = QtWidgets.QHBoxLayout()
      hbox.addWidget(self.gb_c)
      hbox.addStretch(1)
      vbox.addLayout(hbox)
      vbox.addStretch(1)
  
      self.setLayout(vbox)
  
imports: from PyQt5 import QtCore, QtWidgets
  import sys
  import numpy
  from vispy import app, gloo
  from vispy.util.transforms import perspective, translate, rotate
  from vispy.geometry import meshdata
  from vispy.geometry import generation
label_desc: Use image node_id 1 to create a new ObjectWidget object from inherited base classes: QtWidgets with example: obj = ObjectWidget(parent, param)