pytho中 GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的示例分析

发布时间:2021-05-20 14:16:31 作者:小新
来源:亿速云 阅读:210

小编给大家分享一下pytho中 GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

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_())

运行程序,效果如下

pytho中 GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的示例分析pytho中 GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的示例分析pytho中 GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的示例分析

代码分析

运行这个例子,会弹出一个窗口,显示不同方向的箭头,每0.5秒改变一次方向

pixmap.setMask()函数的作用是为调用它的控件增加一个遮罩,遮住所选区域以外的地方,使控件看起来是透明的,它的参数是一个QBitmap对象或一个QRegion对象

本例中调用QPixmap实例的self.pix.mask()函数获得图片自身的遮罩,这个遮罩是一个QBitmap对象

 self.pix=QPixmap(self.mypic[self.i],'0',Qt.AvoidDither|Qt.ThresholdAlphaDither|Qt.ThresholdDither)

        self.resize(self.pix.size())

        self.setMask(self.pix.mask())

paintEvent()函数每次初始化窗口时只调用一次,所以没加载一次图片就要重新调用一次paintEvent()函数,即在更新窗口时调用这个函数,更新窗口的核心代码如下

        self.timer=QTimer()

        self.timer.setInterval(500)

        self.timer.timeout.connect(self.timeChanged)

        self.timer.start()

当定时器的时间到期后更新窗口代码

self.update

PyQt5加载GIF动画实例

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_())

运行效果

pytho中 GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的示例分析

python主要应用领域有哪些

1、云计算,典型应用OpenStack。2、WEB前端开发,众多大型网站均为Python开发。3.人工智能应用,基于大数据分析和深度学习而发展出来的人工智能本质上已经无法离开python。4、系统运维工程项目,自动化运维的标配就是python+Django/flask。5、金融理财分析,量化交易,金融分析。6、大数据分析。

以上是“pytho中 GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. python中GUI库图形界面开发之PyQt5信号与槽多窗口数据传递的示例分析
  2. python中GUI库图形界面开发之PyQt5信号与槽怎么用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python pyqt5

上一篇:代理服务器可用的端口有哪些

下一篇:Vue组件化开发之通用型弹出框的实现示例

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》