📜  PyQt5 Label - 获取阴影效果对象(1)

📅  最后修改于: 2023-12-03 14:45:46.960000             🧑  作者: Mango

PyQt5 Label - 获取阴影效果对象

在PyQt5中,可以给控件添加阴影效果。如果想要获取阴影效果对象,可以使用QGraphicsDropShadowEffect类。

创建带阴影效果的Label控件

以下是如何创建一个带阴影效果的Label控件的示例代码。

from PyQt5.QtWidgets import QLabel, QGraphicsDropShadowEffect, QVBoxLayout, QWidget
from PyQt5.QtGui import QColor


class ShadowLabel(QLabel):
    def __init__(self, parent=None):
        super(ShadowLabel, self).__init__(parent)
        self.setText('Hello World!')
        
        # 创建阴影效果
        shadow = QGraphicsDropShadowEffect(self)
        shadow.setBlurRadius(10)
        shadow.setColor(QColor(0, 0, 0, 160))
        shadow.setOffset(5, 5)
        
        # 将阴影效果应用到Label控件上
        self.setGraphicsEffect(shadow)


if __name__ == '__main__':
    import sys
    
    app = QApplication(sys.argv)
    
    widget = QWidget()
    layout = QVBoxLayout(widget)
    layout.addWidget(ShadowLabel())
    
    widget.show()
    sys.exit(app.exec_())
获取阴影效果对象

要获取阴影效果对象,可以使用graphicsEffect()方法。例如,在上面的示例代码中,可以添加以下代码行来获取阴影效果对象:

shadow_effect = self.graphicsEffect()

将获取的对象保存到变量中,就可以使用它来修改阴影效果的属性。

修改阴影效果属性

要修改阴影效果的属性,可以使用QGraphicsDropShadowEffect类提供的方法。例如,要修改阴影的模糊半径和颜色,可以使用以下代码:

shadow_effect.setBlurRadius(20)
shadow_effect.setColor(QColor(0, 0, 0, 200))

完整代码示例:

from PyQt5.QtWidgets import QLabel, QGraphicsDropShadowEffect, QVBoxLayout, QWidget, QPushButton
from PyQt5.QtGui import QColor


class ShadowLabel(QLabel):
    def __init__(self, parent=None):
        super(ShadowLabel, self).__init__(parent)
        self.setText('Hello World!')
        
        # 创建阴影效果
        shadow = QGraphicsDropShadowEffect(self)
        shadow.setBlurRadius(10)
        shadow.setColor(QColor(0, 0, 0, 160))
        shadow.setOffset(5, 5)
        
        # 将阴影效果应用到Label控件上
        self.setGraphicsEffect(shadow)
        
        # 获取阴影效果对象
        self.shadow_effect = self.graphicsEffect()

    def setShadowBlurRadius(self, radius):
        self.shadow_effect.setBlurRadius(radius)

    def setShadowColor(self, color):
        self.shadow_effect.setColor(color)


if __name__ == '__main__':
    import sys
    
    app = QApplication(sys.argv)
    
    widget = QWidget()
    layout = QVBoxLayout(widget)
    label = ShadowLabel()
    layout.addWidget(label)
    
    btn = QPushButton('修改阴影')
    btn.clicked.connect(lambda: label.setShadowColor(QColor(255, 0, 0, 160)))
    layout.addWidget(btn)
    
    widget.show()
    sys.exit(app.exec_())

在上面的代码中,创建了一个新的方法setShadowColor(),它接受一个QColor对象,用于修改阴影的颜色。setShadowBlurRadius()是另一个用于修改阴影效果的方法,它接受一个整数值,用于修改阴影效果的模糊半径。

以上就是PyQt5中获取阴影效果对象并修改其属性的方法。