做网店好还是网站好,容易导致网站作弊的几个嫌疑,半厘米wordpress,管理网站英文嫌Qt自带的icon太丑#xff0c;自己写了一个#xff0c;主要用于纯色图标的自由改色。 当然#xff0c;图标素材得网上找。 Qt原生图标与现代图标对比#xff1a;
没有对比就没有伤害 Qt图标 网络素材图标 自定义类XJQ_Icon#xff1a;
from PyQt5.QtGui import QIc…嫌Qt自带的icon太丑自己写了一个主要用于纯色图标的自由改色。 当然图标素材得网上找。 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)# QIconhttps://doc.qt.io/qt-6/qicon.htmlsuper().__init__()if(isinstance(data,np.ndarray)):imdataelif(isinstance(data,str)):imself.Opt_LoadPictAsArray(data)else:raise Exception(data参数错误类型仅能为np.ndarray(图片数据)或是str(图片路径))if(len(fg)3):fg(*fg,255)if(len(bg)3):bg(*bg,255)mskcv2.split(im)[3]# mskreduce(lambda a,b:a|b,cv2.split(im))#废弃更多时候只需要关注alpha的值self.__mskcv2.threshold(msk,127,255,cv2.THRESH_BINARY)[1]#cv2纯色图https://blog.csdn.net/qq_45666248/article/details/107666586self.__bgnp.zeros((*msk.shape,4),np.uint8)self.__fgnp.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_andhttps://blog.csdn.net/qq_40210586/article/details/106572504fgself.__fgbgself.__bgfgcv2.bitwise_and(fg,fg, maskself.__msk)bgcv2.addWeighted(bg,1,fg,1,0)pixself.Trans_ArrayToPixmap(bg)self.__pixpix#虽然没有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,dtypenp.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/122016214imgQImage(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)# iconXJQ_Icon(返回.png)# iconXJQ_Icon(三角形-002.png)iconXJQ_Icon(比赛控制者.png)icon.Set_ForeColor((0,255,255,192))btnQPushButton(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.htmlQIcon类https://doc.qt.io/qt-6/qicon.htmlQIcon.addPixmap方法https://wenku.baidu.com/view/8d3284563269a45177232f60ddccda38376be1ba.htmlcv2无法读取中文路径的解决方法https://www.zhihu.com/question/67157462/answer/251754530创建cv2纯色图https://blog.csdn.net/qq_45666248/article/details/107666586cv2掩模操作bitwise_andhttps://blog.csdn.net/qq_40210586/article/details/106572504cv2图片叠加addWeightedhttps://blog.csdn.net/qq_29391809/article/details/117394512 未经本人同意不得私自转载。本文发布于CSDNhttps://blog.csdn.net/weixin_44733774/article/details/135282787