class Worker(QObject): finished=pyqtSignal() def __init__(self, parent=None, **kwargs): super (Worker, self).__init__(parent, **kwargs) self._stop=False self._scheme=0 self._pattern=0 self._width=0 self._speed=0 self._neoPixel=NeoPixel(24) self._neoPixel.setBrightness(.4) @pyqtSlot() def work(self): if self._stop: self._neoPixel.clear() self._neoPixel.show() self.finished.emit() return scheme=schemes[self._scheme] speed=speedValues[self._speed] if self._pattern==BARS: self._neoPixel.bars(scheme, barWidthValues[self._width], speed) elif self._pattern==GRADIENT: self._neoPixel.gradient(scheme, gradientWidthValues[self._width], speed) QTimer.singleShot(10, self.work) @pyqtSlot(int) def setScheme(self, scheme): self._scheme=scheme @pyqtSlot(int) def setPattern(self, pattern): self._pattern=pattern @pyqtSlot(int) def setWidth(self, width): self._width=width @pyqtSlot(int) def setSpeed(self, speed): self._speed=speed @pyqtSlot() def stop(self): self._stop=True