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

news2024/9/20 2:58:25

  基本的demo      

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

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()

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

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()

显示效果:

将其定义为类,方便使用 

# 这是一个动态变化透明度的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()

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

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1940558.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java--接口

目录 语法规则 例子 实现多个接口 接口之间的继承 抽象类和接口的区别 接口使用实例--Comparable接口 Clonable接口 浅拷贝 深拷贝 在现实生活中,接口的例子比比皆是,比如:电源插座,主机上的USB接口等。这些插口中可以插…

【C++】位运算:两整数之和

1.题目 2.算法思路 本题不能只用 -,那大概率用到位运算符。 异或的作用是无进位相加,所以需要通过异或运算(^)来替代加法运算,但是我们无法确定进位的信息。所以需要与运算(&)来得到进位的…

【数据结构与算法 经典例题】翻转二叉树

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法 经典例题》C语言 期待您的关注 ​ 目录 一、问题描述 二、解题思路 三、C语言实现代码 一、问题描述 给你一…

golang 字符编码 gbk/gb2312 utf8编码相互转换,判断字符是否gbk编码函数, 字符编码转换基础原理解析, golang默认编码utf8

虽然golang里面的默认编码都是统一的unicode utf8编码, 但是我们在调用外部系统提供的api时,就可能会遇到别人的接口提供的编码非 utf8编码,而是gbk/gb2312编码, 这时候我们就必须要将别人的gbk编码转换为go语言里面的默认编码ut…

2024国内AI公司50强榜单。。。

你好,我是郭震 近日,2024国内AI公司50强榜单发布。 1 AI公司50强榜单 AI公司排名前五分别是:百度,阿里,华为,腾讯,科大讯飞。 6-10名分别是:小米,商汤,字节跳…

Jeston Orin IIC 驱动测试 —— 以MPU6050为例

前言 后续驱动需要需要使用IIC作为通讯的协议,但是做的板子还没来,因此,在开发板驱动加载真正的之前,我们需要确保IIC能够正常通信。 网上的博客基本都是教怎么使用i2c-tools进行通信的,但是这种方法只是在用户空间下…

【效率提升】程序员常用Shell脚本

文章目录 常用Shell脚本一. 定期更新分区数据二、获取系统资源的使用情况 常用Shell脚本 一. 定期更新分区数据 在某些场景下,我们需要对N年前某一分区的数据进行删除,并添加今年该对应分区的数据,实现数据的流动式存储。 #!/bin/bash dt$…

基于FPGA的数字信号处理(18)--半加器和全加器

前言 在数字系统中,加法运算是最常见的算术运算,同时它也是进行各种复杂运算的基础。 半加器 最简单的加法器叫做 半加器(Half Adder),它将2个输入1bit的数据相加,输出一个2bits的和,和的范围为…

若依前后端获取当前用户

后端 Autowired private TokenService tokenService;LoginUser loginUser tokenService.getLoginUser(); sysInquiry.setCreateBy(loginUser.getUsername()); sysInquiry.setCreateTime(DateUtils.getNowDate()); 前端 获取使用 const nickName this.$store.state.user.nick…

最大似然估计模型及 Stata 具体操作步骤

目录 一、引言 二、理论原理 三、准备数据 四、定义似然函数 五、进行最大似然估计 六、代码解释 七、代码运行结果 八、模型评估与诊断 一、引言 最大似然估计(Maximum Likelihood Estimation,MLE)是一种在统计学中广泛应用的参数估计…

linux下磁盘分区工具GParted

最近发现安装的redhat机器部分磁盘大小分配不合理 使用gpated对磁盘重新分区 1、使用U盘制作一个启动盘 下载启动盘制作工具Index of /downloads 使用非常简单,选择gparted-live-1.1.0-3-i686.iso包即可 2、制作完成后,重启机器,选择U盘…

黑马点评-Postman卡住sending Requst原因解决

不知道为什么,用这个c1e1d5的token就会一直卡死,但是换了一个token就解决了,目前不知道为什么 解决了,原来是这个请求下面的函数发生了死循环!!太瓜皮了我超! 把num写成了count,导…

Docker启动PostgreSql并设置时间与主机同步

在 Docker 中启动 PostgreSql 时,需要配置容器的时间与主机同步。可以通过在 Dockerfile 或者 Docker Compose 文件中设置容器的时区,或者使用宿主机的时间来同步容器的时间。这样可以确保容器中的 PostgreSql 与主机的时间保持一致,避免在使…

【iOS】Tagged Pointer

目录 前言什么是Tagged Pointer?引入Tagged Pointer技术之前引入Tagged Pointer之后总结 Tagged Pointer原理(TagData分析)关闭数据混淆MacOS分析NSNumberNSString iOS分析 判断Tagged PointerTagged Pointer应用Tagged Pointer 注意点 Tagge…

[MySQL][深入理解隔离性][上][MVCC]详细讲解

目录 0.铺垫1.初识MVCC2.三个记录隐藏列字段1.是什么?2.示例 3.undo日志4.模拟MVCC5.思考 0.铺垫 在RR级别的时候,多个事务的update,多个事务的insert,多个事务的delete,是否会有加锁现象? 现象结果是&…

【C++】deque以及优先级队列

容器适配器 deque的介绍deque的原理介绍 priority_queue的介绍与使用priority_queue的介绍priority_queue的使用constructor(构造函数)emptypushpoptopsize priority_queue的模拟实现 仿函数何为适配器容器适配器deque的缺陷选择deque作为适配器的理由ST…

保姆级教程:十分钟快速上手Coze自定义插件

🐼 关注我, 了解更多 AI 前沿资讯和玩法,AI 学习之旅上,我与您一同成长! 我已经不止一次听到这样的话:未来的 AI 应用属于各行各业的智能体 (Agent) ~ 无论是国内的 扣子Coze、Dify,还是国外的…

网易易盾图标点选验证码识别代码

简介 网易图标点选一直都是一个大难题,如上图所示。难点之一是图标变幻莫测,很难刷出有重复的图标,所以使用传统等等方式去标注、识别具有较大的难度。 经过我们大量的数据标注,终于完成了这款验证码的识别。 目前我们提供两种识…

FPGA:频闪灯设计

1、需求 若在FPGA上实现LED灯一秒闪烁一次,先进行计算,1秒闪烁一次,即周期为1秒,开发板XC7A35TFFG-2的基本时钟输入由板载 50MHz 有源晶振提供,即频率为f 50MHz 。 则一个周期为 T 1 f 1 50 M H z 20 n s T\frac{…

C++初阶:模版初阶【范式编程】【函数模板】【类模板】

一.范式编程 我们在写C函数重载的时候,可能会写许多同一类的函数。 比如交换函数: void Swap(int& left, int& right) {int temp left;left right;right temp; }void Swap(double& left, double& right) {double temp left;left …