PyQt5实现桌宠(1)不规则窗体[Python]

不规则窗体

正常的窗体是四方形的,带有窗体本身及边框(有最小化,最大化,关闭按钮)

不规则窗体是任意图形的,一般不带有边框

创建不规则窗体不止需要原始图片,还需要遮罩图片

遮罩图片

遮罩图片用来告诉PyQ原始图片的t哪些部分是显示的,哪些部分是不显示的

遮罩图片只有两色,黑与白。黑色部分是原始图片显示的部分,白色部分是原始图片不显示的部分

如果原始图片的背景是透明或单色的,遮罩图片可通过ps轻易获取

 

 

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtGui import QPixmap,QPainter,QBitmap,QCursor
import PyQt5.QtCore as QtCore


class PixWindow(QWidget):                            #不规则窗体
    def __init__(self, parent=None):
        super(MainWIndow, self).__init__(parent)

        self.pix=QBitmap('b0.png')                        #蒙版
        self.resize(self.pix.size())
        self.setMask(self.pix)

        self.setWindowFlags(Qt.FramelessWindowHint|QtCore.Qt.WindowStaysOnTopHint)        # 设置无边框和置顶窗口样式

    def paintEvent(self, QPaintEvent):                     #绘制窗口
        paint=QPainter(self)
        paint.drawPixmap(0,0,self.pix.width(),self.pix.height(),QPixmap('0.png'))

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

代码解释

__init()__

先关注MainWindow的__init__方法

第一步即第一行调用父类初始化程序

第二步即第二到第四行设置蒙版图片

第三步即第五行设置窗体属性。这里设置无边框并置顶窗体。置顶窗体即让窗体总在windows的所有窗体之上

paintEvent()

第一步创建QPainter实例,用来绘制窗体内容

第二步使用paint的drawPixmap方法绘制窗体内容

 

类解释

QBitmap与QPixmap

即bit图与pix(像素)图的区别。

 

 

实验用图片

PyQt5实现桌宠(1)不规则窗体[Python]_第1张图片PyQt5实现桌宠(1)不规则窗体[Python]_第2张图片

左图为b0.png,右图为0.png

 

文章代码部分来自网络

你可能感兴趣的:(PyQt5实现桌宠(1)不规则窗体[Python])