1.windowOpacity属性

QFrame控件的windowOpacity属性为该控件的透明度
通过 setWindowOpacity 方法设置,于是 动画类QPropertyAnimation可以操作windowOpacity属性进行设置,但是当QFrame的parent为其他控件时,该方法失效,无法设置透明度
如:

self.frame_tips = QFrame(self)
label_tip = QLabel(self.frame_tips)
label_tip.setText("测试")
label_tip.setAlignment(Qt.AlignCenter)
label_tip.adjustSize()
label_tip.resize(120, 50)
self.frame_tips.resize(120, 50)
self.frame_tips.setAttribute(Qt.WA_TranslucentBackground)

2.QGraphicsOpacityEffect类

于是可以通过 QGraphicsOpacityEffect 类来操作透明度
如:

self.frame_tips = QFrame(self)
label_tip = QLabel(self.frame)
label_tip.setText("测试")
label_tip.setAlignment(Qt.AlignCenter)
label_tip.adjustSize()
label.resize(120, 50)
self.frame_tips.resize(120, 50)
self.GraphicsOpacityEffect = QGraphicsOpacityEffect()
self.frame_tips.setGraphicsEffect(self.GraphicsOpacityEffect)
self.frame_tips.setAutoFillBackground(True)

3.opacity属性

其中setOpacity设置透明度,那么setOpacity通过设置其属性opacity来设置的

self.GraphicsOpacityEffect.setOpacity()

所以

#parent=self可以不写,默认为parent=None
#1.0为不透明,0.0为透明
self.anim = QPropertyAnimation(self.GraphicsOpacityEffect, b"opacity",parent=self)
self.anim.setDuration(1000)
self.anim.setEasingCurve(QEasingCurve.InCirc)
self.anim.setStartValue(1.0)
self.anim.setEndValue(0.0)
self.anim.start()

4.示例图

PyQt5 设置动态透明度问题


寂寞的时候,就呼唤我的名字吧。