257 ) -> None:
258 super().__init__(*args, **kwargs)
259 self._device = device
260
261 self._pattern = numpy.ndarray(shape=(self._device.n_actuators))
262 self._actuators: typing.List[QtWidgets.QSlider] = []
263 for i in range(self._device.n_actuators):
264 actuator = QtWidgets.QSlider(QtCore.Qt.Horizontal, parent=self)
265 actuator.setMinimum(0)
266 actuator.setMaximum(100)
267
268 def setThisActuator(value, actuator_index=i):
269 self.setActuatorValue(actuator_index, value)
270
271 actuator.valueChanged.connect(setThisActuator)
272 self._actuators.append(actuator)
273
274
275 self.resetPattern()
276
277 self._reset_button = QtWidgets.QPushButton("Reset", parent=self)
278 self._reset_button.clicked.connect(self.resetPattern)
279
280 main_layout = QtWidgets.QVBoxLayout()
281 main_layout.addWidget(self._reset_button)
282
283 actuators_layout = QtWidgets.QFormLayout()
284 actuators_layout.setLabelAlignment(QtCore.Qt.AlignRight)
285 for i, actuator in enumerate(self._actuators, start=1):
286 actuators_layout.addRow(str(i), actuator)
287 main_layout.addLayout(actuators_layout)
288
289 self.setLayout(main_layout)
290