pyqt5蒙版遮罩mask,setmask的使用


Posted in Python onJune 11, 2021

1.理解

mask()setmask()一般是在pyqt绘图时常见,而且在显示不规则图形时更是常见。

参考书籍上说:

setMask()函数的作用是为调用它的控件增加一个遮罩,遮住所选区域以外的部分,使控件看起来是透明的。它的参数可以是一个QBitmap对象或一个QRegion对象。

其实书上说的不错,可惜我的理解能力达不到啊?

接下来说说我的理解

setmask()添加的遮罩蒙版是QBitmap对象(就是黑白图片)时,和PS的蒙版作用是大体一致的,黑色就是把当前调用的GUI界面变成蒙版,整个界面是黑色的。而白色可以透过当前GUI界面,即如果把蒙版的区域涂成白色的话,就可以看到当前蒙版下面的界面了。这和PS也是一致的。

mask()一般是给图片自己增加蒙版

2.例子

import sys
from PyQt5.QtCore import Qt, QRect, QPoint
from PyQt5.QtWidgets import QWidget, QApplication, QDesktopWidget
from PyQt5.QtGui import QPixmap, QPainter, QBitmap, QCursor, QPen, QBrush
import PyQt5.QtCore as QtCore

'''
# setMask()的作用是为调用它的控件增加一个遮罩,遮住所选区域以外的部分,使之看起来是透明的。
# 它的参数可以为QBitmap或QRegion对象,此处调用QPixmap的mask()函数获得图片自身的遮罩,是一个QBitmap对象,
# 在示例中使用的是Png格式,它的透明部分实际上就是一个遮罩
'''

class PixWindow(QWidget):  # 不规则窗体

    """
    证明蒙版的作用,白色显示当前蒙版遮住的界面(不是gui界面,gui界面就是一个蒙版,可以看到蒙版的颜色是黑色,但可以通过设置界面透明度使黑色变成灰色),黑色遮蔽,mask之外的地方透明
    """
    def __init__(self):
        super().__init__()
        self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
        self.setStyleSheet('''background-color:black; ''')
        # self.setWindowOpacity(0.5)  设置透明度
        print(self.geometry().x())

        self.pix = QBitmap('mask.png')  # 蒙版
        self.resize(self.pix.size())  # 设置当前GUI主界面和蒙版图片一致
        

    def paintEvent(self, event):  # 绘制窗口

        pp = QPainter(self.pix)  # 可以想象为给蒙版 pix 添加画手
        pen = QPen(Qt.red, 4)  # 钢笔
        # pen.setStyle(Qt.NoPen)  # 钢笔无颜色
        pp.setPen(pen)  # 可以想象为给画手钢笔
        brush = QBrush(Qt.white)   # 画刷,填充钢笔画的区域,填充白色是因为白色可以使蒙版透明
        pp.setBrush(brush)
        # 画一个矩形,【rectangle矩形】
        self.startPoint = QPoint(5,5)
        self.endPoint = QPoint(300,200)
        pp.drawRect(QRect(self.startPoint, self.endPoint))  # 在蒙版mask上画矩形,
        # 在蒙版mask上画矩形,使矩形以内蒙版是白色(可以说是在蒙版之外,使得gui界面透明了),以外蒙版是黑色
        self.setMask(self.pix)  # 把当前整个GUI界面设置为蒙版


if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = PixWindow()
    win.show()
    sys.exit(app.exec_())

注意要自己添加mask图片才可以运行程序

注意要自己添加mask图片才可以运行程序

注意要自己添加mask图片才可以运行程序

运行结果

pyqt5蒙版遮罩mask,setmask的使用

由于是把整个界面作为蒙版,所以没有正常的关闭按钮,可以IDE编辑器停止运行按钮来关闭程序,也可以通过其他方法

下面我来试一下把透明度设置为0.6,看看界面

self.setWindowOpacity(0.6)

pyqt5蒙版遮罩mask,setmask的使用

注意要自己添加mask图片

下面是我使用的mask图片,欢迎使用

pyqt5蒙版遮罩mask,setmask的使用

到此这篇关于pyqt5蒙版遮罩mask,setmask的使用的文章就介绍到这了,更多相关pyqt5蒙版遮罩 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
如何用itertools解决无序排列组合的问题
May 18 Python
python实现稀疏矩阵示例代码
Jun 09 Python
Python 判断是否为质数或素数的实例
Oct 30 Python
python爬虫面试宝典(常见问题)
Mar 02 Python
Python迭代器定义与简单用法分析
Apr 30 Python
python XlsxWriter模块创建aexcel表格的实例讲解
May 03 Python
python抽取指定url页面的title方法
May 11 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
Apr 27 Python
pytorch实现mnist分类的示例讲解
Jan 10 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
May 04 Python
python调用私有属性的方法总结
Jul 24 Python
cookies应对python反爬虫知识点详解
Nov 25 Python
详解Python描述符的工作原理
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
用python修改excel表某一列内容的操作方法
Windows安装Anaconda3的方法及使用过程详解
Python Flask请求扩展与中间件相关知识总结
Jun 11 #Python
你喜欢篮球吗?Python实现篮球游戏
教你使用TensorFlow2识别验证码
Jun 11 #Python
You might like
十大催泪虐心动漫电影,有几部你还没看
2020/03/04 日漫
防止MySQL注入或HTML表单滥用的PHP程序
2009/01/21 PHP
window.showModalDialog使用手册
2007/01/11 Javascript
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
2011/05/24 Javascript
JavaScript格式化日期时间的方法和自定义格式化函数示例
2014/04/04 Javascript
jQuery事件绑定与解除绑定实现方法
2015/04/15 Javascript
jQuery 1.9.1源码分析系列(十四)之常用jQuery工具
2015/12/02 Javascript
图文详解Heap Sort堆排序算法及JavaScript的代码实现
2016/05/04 Javascript
使用BootStrap实现标签切换原理解析
2017/03/14 Javascript
layui从数据库中获取复选框的值并默认选中方法
2018/08/15 Javascript
vue 监听键盘回车事件详解 @keyup.enter || @keyup.enter.native
2018/08/25 Javascript
微信小程序性能优化之checkSession的使用
2019/03/06 Javascript
python实现一次创建多级目录的方法
2015/05/15 Python
简要讲解Python编程中线程的创建与锁的使用
2016/02/28 Python
python2.7读取文件夹下所有文件名称及内容的方法
2018/02/24 Python
python matplotlib 在指定的两个点之间连线方法
2018/05/25 Python
pygame游戏之旅 游戏中添加显示文字
2018/11/20 Python
python的concat等多种用法详解
2018/11/28 Python
对Django 转发和重定向的实例详解
2019/08/06 Python
Tensorflow分批量读取数据教程
2020/02/07 Python
python应用Axes3D绘图(批量梯度下降算法)
2020/03/25 Python
在Anaconda3下使用清华镜像源安装TensorFlow(CPU版)
2020/04/19 Python
Python 程序员必须掌握的日志记录
2020/08/17 Python
一款利用html5和css3实现的3D滚动特效的教程
2015/01/04 HTML / CSS
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
汉森批发:Hansen Wholesale
2018/05/24 全球购物
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
进程的查看和调度分别使用什么命令
2013/12/14 面试题
结婚周年感言
2014/02/24 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
大学社团招新的通讯稿
2014/09/10 职场文书
2015年入党积极分子培养考察意见
2015/08/12 职场文书
采购员工作总结范文
2015/08/12 职场文书
国庆节主题班会
2015/08/15 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书
Python爬虫基础讲解之请求
2021/05/13 Python