• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    pyqt5蒙版遮罩mask,setmask的使用

    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图片才可以运行程序

    运行结果

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

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

    self.setWindowOpacity(0.6)
    

    注意要自己添加mask图片

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

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

    您可能感兴趣的文章:
    • pyqt5、qtdesigner安装和环境设置教程
    • 关于python pyqt5安装失败问题的解决方法
    • Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
    • PyQt5每天必学之关闭窗口
    • PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
    • pyqt5简介及安装方法介绍
    • python使用PyQt5的简单方法
    • PyQt5每天必学之像素图控件QPixmap
    上一篇:详解Python描述符的工作原理
    下一篇:PyQt5实现多张图片显示并滚动
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    pyqt5蒙版遮罩mask,setmask的使用 pyqt5,蒙,版遮,罩,mask,setmask,