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 相关文章推荐
PyQT实现多窗口切换
Apr 20 Python
Linux下python与C++使用dlib实现人脸检测
Jun 29 Python
python 判断矩阵中每行非零个数的方法
Jan 26 Python
详解Django-restframework 之频率源码分析
Feb 27 Python
Python实现平行坐标图的两种方法小结
Jul 04 Python
Django中多种重定向方法使用详解
Jul 17 Python
pytorch 在sequential中使用view来reshape的例子
Aug 20 Python
Python产生一个数值范围内的不重复的随机数的实现方法
Aug 21 Python
numpy.ndarray 实现对特定行或列取值
Dec 05 Python
解决Python spyder显示不全df列和行的问题
Apr 20 Python
python里的单引号和双引号的有什么作用
Jun 17 Python
Python list列表删除元素的4种方法
Nov 01 Python
详解Python描述符的工作原理
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
用python修改excel表某一列内容的操作方法
Windows安装Anaconda3的方法及使用过程详解
Python Flask请求扩展与中间件相关知识总结
Jun 11 #Python
你喜欢篮球吗?Python实现篮球游戏
教你使用TensorFlow2识别验证码
Jun 11 #Python
You might like
Windows7下PHP开发环境安装配置图文方法
2010/05/20 PHP
php中adodbzip类实例
2014/12/08 PHP
validator验证控件使用代码
2010/11/23 Javascript
JQuery-tableDnD 拖拽的基本使用介绍
2013/07/04 Javascript
jquery easyui滚动条部分设置介绍
2013/09/12 Javascript
js和css写一个可以自动隐藏的悬浮框
2014/03/05 Javascript
javascript实现在线客服效果
2015/07/15 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
2015/11/03 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
2015/12/18 Javascript
jQuery unbind()方法实例详解
2016/01/19 Javascript
nodejs开发——express路由与中间件
2017/03/24 NodeJs
鼠标拖动改变DIV等网页元素的大小的实现方法
2017/07/06 Javascript
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
2017/07/20 Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
2017/09/10 jQuery
Vue-CLI3.x 设置反向代理的方法
2018/12/06 Javascript
微信小程序实现搜索指定景点周边美食、酒店
2019/05/18 Javascript
如何解决日期函数new Date()浏览器兼容性问题
2019/09/11 Javascript
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
[46:50]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
在Python中使用PIL模块对图片进行高斯模糊处理的教程
2015/05/05 Python
简单介绍Python中的几种数据类型
2016/01/02 Python
全面理解Python中self的用法
2016/06/04 Python
python实现泊松图像融合
2018/07/26 Python
python 列表输出重复值以及对应的角标方法
2019/06/11 Python
基于python的selenium两种文件上传操作实现详解
2019/09/19 Python
python实现TCP文件传输
2020/03/20 Python
Pycharm及python安装详细教程(图解)
2020/07/31 Python
css3截图_动力节点Java学院整理
2017/07/11 HTML / CSS
纽约JewelryAffairs珠宝店:精细金银时尚首饰
2017/02/05 全球购物
2014年创卫实施方案
2014/02/18 职场文书
防灾减灾宣传标语
2014/10/07 职场文书
惊涛骇浪观后感
2015/06/05 职场文书
2016年学校禁毒宣传活动工作总结
2016/04/05 职场文书
应届毕业生的自我评价
2019/06/21 职场文书
Python实现科学占卜 让视频自动打码
2022/04/09 Python
Golang实现可重入锁的示例代码
2022/05/25 Golang