专栏首页sktjpython pyqt5 卡通人物形状窗体

python pyqt5 卡通人物形状窗体

-- coding: utf-8 --

""" 【简介】 不规则的,可以拖动的窗体实现例子

"""

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

class ShapeWidget(QWidget): def init(self, parent=None): super(ShapeWidget, self).init(parent) self.setWindowTitle("不规则的,可以拖动的窗体实现例子") self.mypix()

# 显示不规则 pic
def mypix(self):
    self.pix = QBitmap("./images/mask.png")
    self.resize(self.pix.size())
    self.setMask(self.pix)
    print(self.pix.size())
    self.dragPosition = None

# 重定义鼠标按下响应函数mousePressEvent(QMouseEvent)和鼠标移动响应函数mouseMoveEvent(QMouseEvent),使不规则窗体能响应鼠标事件,随意拖动。
def mousePressEvent(self, event):
    if event.button() == Qt.LeftButton:
        self.m_drag = True
        self.m_DragPosition = event.globalPos() - self.pos()
        event.accept()
        self.setCursor(QCursor(Qt.OpenHandCursor))
    if event.button() == Qt.RightButton:
        self.close()

def mouseMoveEvent(self, QMouseEvent):
    if Qt.LeftButton and self.m_drag:
        # 当左键移动窗体修改偏移值
        self.move(QMouseEvent.globalPos() - self.m_DragPosition)
        QMouseEvent.accept()

def mouseReleaseEvent(self, QMouseEvent):
    self.m_drag = False
    self.setCursor(QCursor(Qt.ArrowCursor))

# 一般 paintEvent 在窗体首次绘制加载, 要重新加载paintEvent 需要重新加载窗口使用 self.update() or  self.repaint()
def paintEvent(self, event):
    painter = QPainter(self)
    painter.drawPixmap(0, 0, self.width(), self.height(), QPixmap("./images/boy.png"))

if name == 'main': app = QApplication(sys.argv) form = ShapeWidget() form.show() app.exec_()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python pyqt5 事件过滤器

    from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets impo...

    用户5760343
  • python pyqt5 按钮 QPushButton

    QAbstractButton/QPushButton,QToolButton,QRadioButton,QCheckBox 按钮状态: isDown() ...

    用户5760343
  • python pyqt5 窗体动画效果

    import sys from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtGui ...

    用户5760343
  • iOS 自定义分段控制器

    最近做项目时遇到一些问题,就是项目里原有分段控制器的适用范围有些局限,虽然网上也有很多分段控制器的demo,但自己写的,可控性和项目适用性自己能很明白,所以我专...

    清墨
  • Python魔术方法-Magic Method

    目录[-] 介绍 在Python中,所有以“__”双下划线包起来的方法,都统称为“Magic Method”,例如类的初始化方法 __init__ ,Pyt...

    jhao104
  • Tiknter例子3

    ============================================

    py3study
  • Python魔法方法指南

    什么是魔法方法呢?它们在面向对象的Python的处处皆是。它们是一些可以让你对类添加“魔法”的特殊方法。 它们经常是两个下划线包围来命名的(比如 __init_...

    py3study
  • python 长连接 mysql数据库

    python链接mysql中没有长链接的概念,但我们可以利用mysql的ping机制,来实现长链接功能

    py3study
  • 高效处理流量加解密——Burpy

    先来地址:Github: https://github.com/mr-m0nst3r/Burpy

    用户2202688
  • Seleninum&PhamtomJS爬取煎蛋网妹子图

    mylog.py  日志模块,记录一些爬取过程中的信息,在大量爬取的时候,没有log帮助定位,很难找到错误点

    py3study

扫码关注云+社区

领取腾讯云代金券