You only need to apply the effect once. Here is an example made from the link above:
#!/usr/bin/python3
import sys
import os
from PyQt5 import QtCore, QtGui, QtWidgets
class Main(QtWidgets.QMainWindow):
def __init__(self, parent):
super().__init__()
self.ui = QtWidgets.QWidget(self)
self.ui.label = QtWidgets.QLabel()
self.ui.layout = QtWidgets.QVBoxLayout()
self.ui.layout.addWidget(self.ui.label)
self.ui.setLayout(self.ui.layout)
self._addShadowEffect(self.ui.label)
self.setCentralWidget(self.ui)
self.show()
self.scoreTimer = QtCore.QTimer(interval=200)
self.scoreTimer.timeout.connect(self._updateScore)
self.scoreTimer.start()
def _addShadowEffect(self, item):
effect = QtWidgets.QGraphicsDropShadowEffect()
effect.setBlurRadius(1)
effect.setColor(QtGui.QColor("red"))
effect.setOffset(1,1)
item.setGraphicsEffect(effect)
def _updateScore(self):
randomText = os.urandom(32).decode("latin1")
self.ui.label.setText(randomText)
if __name__== '__main__':
app = QtWidgets.QApplication([])
gui = Main(app)
sys.exit(app.exec_())