当前位置: 首页 > news >正文

【PyQt】(自定义类)QIcon派生,更易用的纯色Icon

嫌Qt自带的icon太丑,自己写了一个,主要用于纯色图标的自由改色。
当然,图标素材得网上找。



Qt原生图标与现代图标对比:

没有对比就没有伤害

Qt图标
Qt图标

网络素材图标
素材图标
请添加图片描述
请添加图片描述



自定义类XJQ_Icon:

from PyQt5.QtGui import QIcon,QPixmap,QImagefrom cv2 import cv2
import numpy as np
from functools import reduce__all__=['XJQ_Icon']
class XJQ_Icon(QIcon):def __init__(self,data,fg=(255,0,0,255),bg=(0,0,0,0)):#data可以为图片路径(str)或是图片数据(np.ndarray)# QIcon:https://doc.qt.io/qt-6/qicon.htmlsuper().__init__()if(isinstance(data,np.ndarray)):im=dataelif(isinstance(data,str)):im=self.Opt_LoadPictAsArray(data)else:raise Exception('data参数错误,类型仅能为np.ndarray(图片数据)或是str(图片路径)')if(len(fg)==3):fg=(*fg,255)if(len(bg)==3):bg=(*bg,255)msk=cv2.split(im)[3]# msk=reduce(lambda a,b:a|b,cv2.split(im))#废弃,更多时候只需要关注alpha的值self.__msk=cv2.threshold(msk,127,255,cv2.THRESH_BINARY)[1]#cv2纯色图:https://blog.csdn.net/qq_45666248/article/details/107666586self.__bg=np.zeros((*msk.shape,4),np.uint8)self.__fg=np.zeros((*msk.shape,4),np.uint8)self.__bg[:] = bgself.__fg[:] = fgself.__UpdatePixmap()def Set_ForeColor(self,fg):if(len(fg)==3):fg=(*fg,255)self.__fg[:] = fgself.__UpdatePixmap()def Set_BackColor(self,bg):if(len(bg)==3):bg=(*bg,255)self.__bg[:] = bgself.__UpdatePixmap()def __UpdatePixmap(self):#模运算bitwise_and:https://blog.csdn.net/qq_40210586/article/details/106572504fg=self.__fgbg=self.__bgfg=cv2.bitwise_and(fg,fg, mask=self.__msk)bg=cv2.addWeighted(bg,1,fg,1,0)pix=self.Trans_ArrayToPixmap(bg)self.__pix=pix#虽然没有setPixmap但有这个addPixmap函数,简单看了下这个函数的功能,符合预期,很好#https://wenku.baidu.com/view/8d3284563269a45177232f60ddccda38376be1ba.htmlself.addPixmap(pix)@staticmethoddef Opt_LoadPictAsArray(path):#cv2读取中文路径图片:https://www.zhihu.com/question/67157462/answer/251754530return cv2.imdecode(np.fromfile(path,dtype=np.uint8),cv2.IMREAD_UNCHANGED)@staticmethoddef Trans_ArrayToPixmap(arr):#arr对应四通道图片。不使用PIL.Image模块#https://blog.csdn.net/comedate/article/details/121259033#https://blog.csdn.net/weixin_44431795/article/details/122016214img=QImage(arr.data, arr.shape[1], arr.shape[0], arr.shape[1]*4, QImage.Format_RGBA8888)return QPixmap(img)


示例代码+运行结果:

if __name__ == '__main__':import sysfrom PyQt5.QtWidgets import QWidget,QApplication,QPushButton,QLabelfrom PyQt5.QtCore import QSizeapp = QApplication(sys.argv)# icon=XJQ_Icon('返回.png')# icon=XJQ_Icon('三角形-002.png')icon=XJQ_Icon('比赛控制者.png')icon.Set_ForeColor((0,255,255,192))btn=QPushButton("ABC")btn.setIconSize(QSize(100,100))btn.setStyleSheet('font-size:50px;background:#FF8844')btn.setIcon(icon)btn.show()sys.exit(app.exec_())

运行结果



碎碎念:

  • 不得不说,与图片处理相关的复杂操作尽量别拉上Qt,会将操作复杂化的(而且往往得不到想要的效果)。像是在这篇帖子如何在 QPainter 中使用mask中,哪怕这么简单而又常见的场景,解决方案都那么抽象。
  • 图标素材请去网上获取,我看着爱给网提供的素材都还不错,虽然资源收费,但貌似没有很好的反爬防盗机制,图片很轻易就能保存下来(嘛如果真有防盗那直接去别的素材网就好了


参考:

  • 网络图标素材-爱给网:https://www.aigei.com/view/98465.html
  • QIcon类:https://doc.qt.io/qt-6/qicon.html
  • QIcon.addPixmap方法:https://wenku.baidu.com/view/8d3284563269a45177232f60ddccda38376be1ba.html
  • cv2无法读取中文路径的解决方法:https://www.zhihu.com/question/67157462/answer/251754530
  • 创建cv2纯色图:https://blog.csdn.net/qq_45666248/article/details/107666586
  • cv2掩模操作bitwise_and:https://blog.csdn.net/qq_40210586/article/details/106572504
  • cv2图片叠加addWeighted:https://blog.csdn.net/qq_29391809/article/details/117394512

未经本人同意不得私自转载。本文发布于CSDN:https://blog.csdn.net/weixin_44733774/article/details/135282787

相关文章:

【PyQt】(自定义类)QIcon派生,更易用的纯色Icon

嫌Qt自带的icon太丑,自己写了一个,主要用于纯色图标的自由改色。 当然,图标素材得网上找。 Qt原生图标与现代图标对比: 没有对比就没有伤害 Qt图标 网络素材图标 自定义类XJQ_Icon: from PyQt5.QtGui import QIc…...

【mysql】数据处理格式化、转换、判断

数据处理 判断是否超时,时间是否大于当前时间计算分钟数时间格式化处理如果数值类型进行转换字符类型字符拼接case-when代替if-else判断数据空(特殊:含空数据、空字符处理) select /*判断是否超时,时间是否大于当前…...

深入探索Java中的UDP网络通信机制

在网络通信中,UDP(User Datagram Protocol,用户数据报协议)是一种无连接的协议,它在某些情况下比TCP更适合,尤其是在要求速度快、对数据准确性要求相对较低的场景下。本文将介绍如何使用Java进行UDP网络通信…...

List常见方法和遍历操作

List集合的特点 有序: 存和取的元素顺序一致有索引:可以通过索引操作元素可重复:存储的元素可以重复 List集合的特有方法 Collection的方法List都继承了List集合因为有索引,所以有了很多操作索引的方法 ublic static void main…...

【基础篇】一、认识JVM

文章目录 1、虚拟机2、Java虚拟机3、JVM的整体结构4、Java代码的执行流程5、JVM的三大功能6、JVM的分类7、JVM的生命周期 1、虚拟机 虚拟机,Virtual Machine,一台虚拟的计算机,用来执行虚拟计算机指令。分为: 系统虚拟机&#x…...

DrGraph原理示教 - OpenCV 4 功能 - 颜色空间

前言 前段时间,甲方提出明确需求,让把软件国产化。稍微研究了一下,那就转QT开发,顺便把以前的功能代码重写一遍。 至于在Ubuntu下折腾QT、OpenCV安装事宜,网上文章很多,照猫画虎即可。 这个过程&#xff0…...

听GPT 讲Rust源代码--src/tools(36)

File: rust/src/tools/clippy/clippy_lints/src/loops/empty_loop.rs 在Rust源代码中,empty_loop.rs文件位于src/tools/clippy/clippy_lints/src/loops/目录下,它的作用是实现并提供一个名为EMPTY_LOOP的Lint规则。Clippy是一个Rust的静态分析工具&#…...

学生数据可视化与分析工具 vue3+flask实现

目录 一、技术栈亮点 二、功能特点 三、应用场景 四、结语 学生数据可视化与分析工具介绍 在当今的教育领域,数据驱动的决策正变得越来越重要。为了满足学校、教师和学生对于数据深度洞察的需求,我们推出了一款基于Vue3和Flask编写的学生数据可视化…...

uni-app condition启动模式配置

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…...

网大为卸任腾讯CXO;Midjourney 1 月训练视频模型;2023年马斯克赚了7700亿

投融资 • 2023 年大型科技公司在生成式 AI 初创企业上的投资远超风险投资集团• 恒信东方与无锡政府合作成立布局 MR/XR 技术及 3D 数字资产 AIGC 产业投资基金• 新公司法完善注册资本认缴登记制度• 网大为卸任腾讯CXO,曾促成南非MIH的投资• 宁波蔚孚科技完成数…...

据报道,微软的下一代 Surface 笔记本电脑将是其首款真正的“人工智能 PC”

明年,微软计划推出 Surface Laptop 6和 Surface Pro 10,这两款设备将提供 Arm 和 Intel 两种处理器选项。不愿意透露姓名的不透露姓名人士透露,这些新设备将引入先进的人工智能功能,包括配备下一代神经处理单元 (NPU)。据悉&#…...

Springer build pdf乱码

在textstudio中编辑时没有错误,在editor manager生成pdf时报错。 首先不要改源文件,着重看你的上传顺序: 将.tex文件,.bst文件,.cls文件,.bib文件, .bbl文件的类型,在editor manager中是Item。…...

k8s之kudeadm

kubeadm来快速的搭建一个k8s的集群: 二进制搭建适合大集群,50台以上主机 kubeadm更适合中小企业的业务集群 master:192.168.233.91 docker kubelet lubeadm kubectl flannel node1:192.168.233.92 docker kubelet lubeadm kubectl flannel…...

NModbus-一个C#的Modbus协议库实现

NModbus-一个基于C#实现的Modbus通信协议库 最近在学习C#的时候,因为之前做过环保设备时使用C做过环保设备采集使用到了Modbus协议,当时看了一下基于C语言开发的libmodbus库。所以特意搜索看了一下C#下有什么Modbus协议库,在Github上面找了一…...

Altium Designer20中遇到的问题和解决办法记录

最近二战考完研了,重新拾起之前学的一些项目,最近在优化以前话的四层PCB版的时候发现了在使用AD使碰到一些问题现在记录如下: 1.Altium Designer 中的 Clearance Constraint 错误如何修改 : 我遇到的报错如下:  这…...

flask web学习之flask与http(二)

文章目录 1. HTTP响应1.1 响应报文1.2 常见HTTP状态码1.3 在flask中如何生成响应1.3.1重定向1.3.2错误响应 1.4响应格式 在flask程序中,客户端发出的请求触发相应的视图函数,获取返回值会作为响应的主体,最后生成完整的响应,即响应…...

基于Python的电商手机数据可视化分析和推荐系统

1. 项目简介 本项目旨在通过Python技术栈对京东平台上的手机数据进行抓取、分析并构建一个简单的手机推荐系统。主要功能包括: 网络爬虫:从京东获取手机数据;数据分析:统计各厂商手机销售分布、市场占有率、价格区间和好评率&am…...

汽车制造厂批量使用成华制造弹簧平衡器

数年来,成华制造都在不断的向各行各界输出着自己的起重设备,与众多企业达成合作,不断供应优质产品。近些年,成华制造以其卓越的产品质量和高效的生产能力,成功实现了弹簧平衡器的大规模批量供应,为重庆数家…...

一语道破爬虫,来揭开爬虫面纱

目录 一、爬虫(网络蜘蛛(Spider)) 1.1、是什么: 1.2、学习的原因 1.3、用在地方: 1.4、是否合法: 1.5、后果 案例: 二、应用领域 三、Robots协议 四、抓包 4.1、浏览器抓包 4.2、抓包工具 常见…...

时序分解 | Matlab实现贝叶斯变化点检测与时间序列分解

时序分解 | Matlab实现贝叶斯变化点检测与时间序列分解 目录 时序分解 | Matlab实现贝叶斯变化点检测与时间序列分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现贝叶斯变化点检测与时间序列分解 1.Matlab实现贝叶斯变化点检测与时间序列分解,完…...

IDEA插件开发实战:手把手教你开发首个效率工具(附GitHub源码)

IDEA插件开发实战:从零打造你的专属效率工具 JetBrains系列IDE的强大之处不仅在于其核心功能,更在于其开放的插件生态系统。作为一名Java开发者,你是否曾想过为IDEA添加一个能提升自己工作效率的专属工具?本文将带你从零开始&…...

STM32姿态报警器设计:MPU6050与卡尔曼滤波实战

基于STM32的姿态翻转报警器设计与实现1. 项目概述1.1 系统架构本姿态翻转报警系统采用模块化设计,核心架构由STM32F103RCT6微控制器作为主控单元,通过I2C接口连接MPU6050惯性测量单元(IMU)传感器,实时采集设备的三轴加速度和三轴角速度数据。…...

PdfiumAndroid完全指南:从集成到高级应用

PdfiumAndroid完全指南:从集成到高级应用 【免费下载链接】PdfiumAndroid 项目地址: https://gitcode.com/gh_mirrors/pd/PdfiumAndroid PdfiumAndroid是一款专为Android开发打造的PDF渲染库,基于Pdfium原生库提供API级别14及以上设备的PDF文件处…...

苹果全球推出关键MDM工具和企业服务

随着苹果在企业市场份额的稳步增长,该公司终于在美国以外地区推出了其面向中小型企业(SMB)的实用服务集合Apple Business Essentials,但这次它不再叫Apple Business Essentials,而且其中大部分服务都将免费提供。Apple…...

HRNet的‘并行多分支’到底强在哪?一个动画图解带你彻底搞懂特征融合机制

HRNet并行多分支架构的视觉化解析:如何通过双向特征融合突破关键点检测精度瓶颈 在计算机视觉领域,关键点检测任务(如人体姿态估计、人脸特征点定位)对空间精度的要求近乎苛刻。传统卷积神经网络通过层层下采样提取语义特征的代价…...

探索:空间网格编码SpatialGridCoding在北斗导航与地理实体管理中的应用

1. 空间网格编码:北斗导航的"数字身份证" 想象一下,当你打开手机导航时,系统如何快速锁定你的位置并规划路线?这背后离不开空间网格编码技术的支持。简单来说,空间网格编码就像给地球表面贴满二维码&#xf…...

公开信息整理|2026年3月27日:楼市需求、长护险覆盖、个体工商户增长与部分国际动态速览

🔥个人主页:杨利杰YJlio❄️个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》 《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更…...

通义千问3-Reranker-0.6B效果惊艳:数学证明步骤间逻辑连贯性重排序

通义千问3-Reranker-0.6B效果惊艳:数学证明步骤间逻辑连贯性重排序 1. 模型介绍与核心能力 通义千问3-Reranker-0.6B是Qwen3 Embedding模型系列的最新成员,专门针对文本重排序任务进行了深度优化。这个6亿参数的模型虽然体积小巧,但在数学证…...

3000 字深度拆解:Paperxie AI 期刊写作界面全解析 —— 科研人必看的 “投刊效率密码”

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/期刊论文https://www.paperxie.cn/ai/journalArticleshttps://www.paperxie.cn/ai/journalArticles 一、引言:科研人的投稿困局,藏在每一个被忽略的界面细节里 当科研人熬过无数个深…...

七牛云图床避坑指南:如何避免CNAME解析和HTTPS配置中的常见错误

七牛云图床高阶配置实战:CNAME与HTTPS深度排错手册 第一次用七牛云图床时,我在凌晨三点对着屏幕上的404错误发呆——明明按照文档一步步操作,为什么图片死活加载不出来?后来才发现是CNAME解析的TTL缓存问题。这种看似简单的配置背…...