PySide(PyQt),使用 QGraphicsOpacityEffect 设置小部件的整体显示透明度

基本的demo

在 PySide6 中,可以使用 QGraphicsOpacityEffect 类来实现整体显示透明度。下面是一个简单的示例,演示了如何为 QLabel 设置透明度:

python 复制代码
from PySide6.QtWidgets import QApplication, QLabel, QGraphicsOpacityEffect, QVBoxLayout, QWidget

app = QApplication([])

# 创建主窗口
window = QWidget()
layout = QVBoxLayout(window)

# 创建 QLabel
label = QLabel("这是一个带有透明度的 QLabel")
layout.addWidget(label)

# 创建 QGraphicsOpacityEffect 对象
opacity_effect = QGraphicsOpacityEffect()
opacity_effect.setOpacity(0.5)  # 设置透明度,0.0 完全透明,1.0 完全不透明

# 应用效果到 QLabel
label.setGraphicsEffect(opacity_effect)

# 设置主窗口
window.setLayout(layout)
window.show()

app.exec()

制作一个动态闪烁的指示灯

python 复制代码
from PySide6.QtCore import QTimer
from PySide6.QtWidgets import QApplication, QLabel, QGraphicsOpacityEffect, QVBoxLayout, QWidget

app = QApplication([])

# 创建主窗口
window = QWidget()
layout = QVBoxLayout(window)

# 创建 QLabel
label = QLabel()
label.setFixedSize(20, 20)   # 设置尺寸,长宽相等
label.setStyleSheet('border:1px solid #868686;border-radius:10px;background-color: rgb(0, 255, 0);')  # border-radius设置为尺寸的一半,就显示为圆形

layout.addWidget(label)

# 创建 QGraphicsOpacityEffect 对象
opacity_effect = QGraphicsOpacityEffect()

rate = 0.1  # 初始透明度
# 定时器
timer = QTimer()
timer.start(200)


# 定时器超时的槽函数
def timeout_slot():
    global rate
    rate += 0.1
    if rate >= 1.5:
        rate = 0.1
    opacity_effect.setOpacity(rate)  # 设置透明度,0.0 完全透明,1.0 完全不透明
    # 应用效果到 QLabel
    label.setGraphicsEffect(opacity_effect)


timer.timeout.connect(timeout_slot)




# 设置主窗口
window.setLayout(layout)
window.show()

app.exec()

显示效果:

将其定义为类,方便使用

python 复制代码
# 这是一个动态变化透明度的QLabel
from PySide6.QtCore import QTimer
from PySide6.QtWidgets import QApplication, QLabel, QGraphicsOpacityEffect, QVBoxLayout, QWidget


class DynamicTransparencyLamp(QLabel):
    def __init__(self,parent=None):
        super().__init__(parent)
        self.clock = bool
        self.transparency_rate = 0.1
        self.opacity_effect = QGraphicsOpacityEffect()

    # 设置透明度并显示
    def setTransparency(self):
        self.transparency_rate += 0.1
        if self.transparency_rate >= 1.5:
            self.transparency_rate = 0.1
        self.opacity_effect.setOpacity(self.transparency_rate)  # 设置透明度,0.0 完全透明,1.0 完全不透明
        # 应用效果到 QLabel
        self.setGraphicsEffect(self.opacity_effect)


if __name__ == '__main__':
    app = QApplication([])

    # 创建主窗口
    window = QWidget()
    layout = QVBoxLayout(window)

    # 创建 QLabel
    label = DynamicTransparencyLamp()
    label.setFixedSize(20, 20)   # 设置尺寸,长宽相等
    label.setStyleSheet('border:1px solid #868686;border-radius:10px;background-color: rgb(0, 255, 0);')  # border-radius设置为尺寸的一半,就显示为圆形

    layout.addWidget(label)

    # 定时器
    timer = QTimer()
    timer.start(200)

    # 定时器超时的槽函数
    def timeout_slot():
        label.setTransparency()

    timer.timeout.connect(timeout_slot)
    # 设置主窗口
    window.setLayout(layout)
    window.show()
    app.exec()

项目中的应用:摄像指示灯

相关推荐
Blossom.1182 分钟前
AI Agent记忆系统深度实现:从短期记忆到长期人格的演进
人工智能·python·深度学习·算法·决策树·机器学习·copilot
yanxiaoyu1109 分钟前
Pycharm远程调用Autodl进行训练(关机后不影响)
ide·python·pycharm
云和数据.ChenGuang14 分钟前
Python 3.14 与 PyCharm 2025.2.1 的调试器(PyDev)存在兼容性问题
开发语言·python·pycharm
mortimer33 分钟前
从零打造一款桌面实时语音转文字工具:PySide6 与 Sherpa-Onnx 的实践
python·github·pyqt
AnalogElectronic41 分钟前
用AI写游戏4——Python实现飞机大战小游戏1
python·游戏·pygame
爱打球的白师傅2 小时前
python机器学习工程化demo(包含训练模型,预测数据,模型列表,模型详情,删除模型)支持线性回归、逻辑回归、决策树、SVC、随机森林等模型
人工智能·python·深度学习·机器学习·flask·逻辑回归·线性回归
MediaTea2 小时前
Python 第三方库:TensorFlow(深度学习框架)
开发语言·人工智能·python·深度学习·tensorflow
Joker-Tong3 小时前
大模型数据洞察能力方法调研
人工智能·python·agent
B站计算机毕业设计之家3 小时前
基于Python+Django+双协同过滤豆瓣电影推荐系统 协同过滤推荐算法 爬虫 大数据毕业设计(源码+文档)✅
大数据·爬虫·python·机器学习·数据分析·django·推荐算法
逻极3 小时前
Webhook 全解析:事件驱动时代的实时集成核心技术
python·web