PyQt5不规则窗口实现动画效果实例
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class ShapeWidget(QWidget):
def __init__(self,parent=None):
super(ShapeWidget, self).__init__(parent)
self.i=1
self.mypix()
self.timer=QTimer()
self.timer.setInterval(500)
self.timer.timeout.connect(self.timeChanged)
self.timer.start()
#显示不规则图片
def mypix(self):
self.update()
if self.i==5:
self.i=1
self.mypic={1:'./images/left.png',2:'./images/up.png',3:'./images/right.png',4:'./images/down.png'}
self.pix=QPixmap(self.mypic[self.i],'0',Qt.AvoidDither|Qt.ThresholdAlphaDither|Qt.ThresholdDither)
self.resize(self.pix.size())
self.setMask(self.pix.mask())
self.dragPosition=None
def mousePressEvent(self, QMouseEvent):
if QMouseEvent.button()==Qt.LeftButton:
self.m_drag=True
self.m_DragPosition=QMouseEvent.globalPos()-self.pos()
QMouseEvent.accept()
self.setCursor(QCursor(Qt.OpenHandCursor))
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))
def paintEvent(self, QPaintEvent):
painter=QPainter(self)
painter.drawPixmap(0,0,self.pix.width(),self.pix.height(),self.pix)
def mouseDoubleClickEvent(self, QMouseEvent):
if QMouseEvent.button()==1:
self.i+=1
self.mypix()
def timeChanged(self):
self.i+=1
self.mypix()
if __name__ == '__main__':
app=QApplication(sys.argv)
form=ShapeWidget()
form.show()
sys.exit(app.exec_())
运行程序,效果如下
代码分析
运行这个例子,会弹出一个窗口,显示不同方向的箭头,每0.5秒改变一次方向
pixmap.setMask()函数的作用是为调用它的控件增加一个遮罩,遮住所选区域以外的地方,使控件看起来是透明的,它的参数是一个QBitmap对象或一个QRegion对象
本例中调用QPixmap实例的self.pix.mask()函数获得图片自身的遮罩,这个遮罩是一个QBitmap对象
"htmlcode">
import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * class LoadingGifWin(QWidget): def __init__(self,parent=None): super(LoadingGifWin, self).__init__(parent) #实例化标签到窗口中 self.label=QLabel('',self) #设置标签的宽度与高度 self.setFixedSize(128,128) #设置无边框 self.setWindowFlags(Qt.Dialog | Qt.CustomizeWindowHint) self.movie=QMovie('./images/loading.gif') self.label.setMovie(self.movie) self.movie.start() if __name__ == '__main__': app=QApplication(sys.argv) load=LoadingGifWin() load.show() sys.exit(app.exec_())运行效果
本文主要讲解了PyQt5实现窗口动画的两种方法,推荐第2种PyQt5加载显示GIF动画方法,想了解更多关于PyQt5窗口知识请查看下面的相关链接
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例”评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新动态
2025年10月28日
2025年10月28日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]



