#python #pyqt #pyqt5
#python #pyqt #pyqt5
Вопрос:
Я хочу удалить эффект тени в leaveEvent. Вот мой код:
class GroupBox(QGroupBox):
def __init__(self, parent=None, shadow=True):
super(GroupBox, self).__init__(parent)
self.isShadow = shadow
if self.isShadow == True:
self.shadow = QGraphicsDropShadowEffect()
elif self.isShadow == False:
self.shadow = None
def enterEvent(self, event):
if self.shadow != None:
self.shadow.setBlurRadius(10)
self.shadow.setOffset(0, 0)
self.setGraphicsEffect(self.shadow)
def leaveEvent(self, event):
self.shadow = None
Любые предложения о том, как это исправить?
Ответ №1:
Если вы хотите удалить QGraphicsEffect, вы должны передать None методу setGraphicsEffect, но побочным эффектом является то, что QGraphicsEffect будет удален, поэтому вам придется заново создать QGraphicsEffect:
class GroupBox(QGroupBox):
def __init__(self, parent=None, shadow=True):
super(GroupBox, self).__init__(parent)
self._is_shadow = shadow
@property
def is_shadow(self):
return self._is_shadow
def enterEvent(self, event):
if self.is_shadow:
shadow_effect = QGraphicsDropShadowEffect(
blurRadius=10, offset=QPointF(0, 0)
)
self.setGraphicsEffect(shadow_effect)
def leaveEvent(self, event):
if self.is_shadow:
self.setGraphicsEffect(None)