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 相关文章推荐
python监控网卡流量并使用graphite绘图的示例
Apr 27 Python
测试、预发布后用python检测网页是否有日常链接
Jun 03 Python
Python中optparse模块使用浅析
Jan 01 Python
Python Web框架Flask中使用七牛云存储实例
Feb 08 Python
详解Python网络爬虫功能的基本写法
Jan 28 Python
Python协程的用法和例子详解
Sep 09 Python
Python使用base64模块进行二进制数据编码详解
Jan 11 Python
numpy添加新的维度:newaxis的方法
Aug 02 Python
关于matplotlib-legend 位置属性 loc 使用说明
May 16 Python
Python小白不正确的使用类变量实例
May 29 Python
sklearn和keras的数据切分与交叉验证的实例详解
Jun 19 Python
python 读取、写入txt文件的示例
Sep 27 Python
详解Python描述符的工作原理
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
用python修改excel表某一列内容的操作方法
Windows安装Anaconda3的方法及使用过程详解
Python Flask请求扩展与中间件相关知识总结
Jun 11 #Python
你喜欢篮球吗?Python实现篮球游戏
教你使用TensorFlow2识别验证码
Jun 11 #Python
You might like
PHP在字符断点处截断文字的实现代码
2011/04/21 PHP
php压缩HTML函数轻松实现压缩html/js/Css及注意事项
2013/01/27 PHP
laravel安装zend opcache加速器教程
2015/03/02 PHP
php身份证号码检查类实例
2015/06/18 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
浅谈PHP中的Trait使用方法
2019/03/22 PHP
解决Laravel 不能创建 migration 的问题
2019/10/09 PHP
jquery监听div内容的变化具体实现思路
2013/11/04 Javascript
Javascript 读取操作Sql中的Xml字段
2014/10/09 Javascript
jQuery中的Deferred和promise 的区别
2016/04/03 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
js文件中直接alert()中文出来的是乱码的解决方法
2016/11/01 Javascript
深入理解react-router@4.0 使用和源码解析
2017/05/23 Javascript
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
2019/09/29 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
在Django的URLconf中使用命名组的方法
2015/07/18 Python
Python中你应该知道的一些内置函数
2017/03/31 Python
Python新手们容易犯的几个错误总结
2017/04/01 Python
详解Python之unittest单元测试代码
2018/01/24 Python
Python设计模式之观察者模式原理与用法详解
2019/01/16 Python
Python如何计算语句执行时间
2019/11/22 Python
python代码xml转txt实例
2020/03/10 Python
Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解
2020/03/30 Python
加拿大户外探险购物网站:SAIL
2020/06/27 全球购物
应届护士推荐信
2013/11/16 职场文书
高中军训感言200字
2014/02/23 职场文书
最经典的大学生职业生涯规划范文
2014/03/05 职场文书
大学生交通专业求职信
2014/09/01 职场文书
机关作风整顿个人剖析材料
2014/10/06 职场文书
2014年安全管理工作总结
2014/12/01 职场文书
2015年大学生实习评语
2015/03/25 职场文书
目标责任书格式范文
2015/05/11 职场文书
2015年园林绿化工作总结
2015/05/23 职场文书
Nginx进程调度问题详解
2021/09/25 Servers
Matplotlib绘制条形图的方法你知道吗
2022/03/21 Python