溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

pytho中 GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5不規(guī)則窗口實(shí)現(xiàn)與顯示GIF動(dòng)畫的示例分析

發(fā)布時(shí)間:2021-05-20 14:16:31 來(lái)源:億速云 閱讀:206 作者:小新 欄目:開(kāi)發(fā)技術(shù)

小編給大家分享一下pytho中 GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5不規(guī)則窗口實(shí)現(xiàn)與顯示GIF動(dòng)畫的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

PyQt5不規(guī)則窗口實(shí)現(xiàn)動(dòng)畫效果實(shí)例

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()
  #顯示不規(guī)則圖片
  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_())

運(yùn)行程序,效果如下

pytho中 GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5不規(guī)則窗口實(shí)現(xiàn)與顯示GIF動(dòng)畫的示例分析pytho中 GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5不規(guī)則窗口實(shí)現(xiàn)與顯示GIF動(dòng)畫的示例分析pytho中 GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5不規(guī)則窗口實(shí)現(xiàn)與顯示GIF動(dòng)畫的示例分析

代碼分析

運(yùn)行這個(gè)例子,會(huì)彈出一個(gè)窗口,顯示不同方向的箭頭,每0.5秒改變一次方向

pixmap.setMask()函數(shù)的作用是為調(diào)用它的控件增加一個(gè)遮罩,遮住所選區(qū)域以外的地方,使控件看起來(lái)是透明的,它的參數(shù)是一個(gè)QBitmap對(duì)象或一個(gè)QRegion對(duì)象

本例中調(diào)用QPixmap實(shí)例的self.pix.mask()函數(shù)獲得圖片自身的遮罩,這個(gè)遮罩是一個(gè)QBitmap對(duì)象

 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()函數(shù)每次初始化窗口時(shí)只調(diào)用一次,所以沒(méi)加載一次圖片就要重新調(diào)用一次paintEvent()函數(shù),即在更新窗口時(shí)調(diào)用這個(gè)函數(shù),更新窗口的核心代碼如下

        self.timer=QTimer()

        self.timer.setInterval(500)

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

        self.timer.start()

當(dāng)定時(shí)器的時(shí)間到期后更新窗口代碼

self.update

PyQt5加載GIF動(dòng)畫實(shí)例

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)
    #實(shí)例化標(biāo)簽到窗口中
    self.label=QLabel('',self)
    #設(shè)置標(biāo)簽的寬度與高度
    self.setFixedSize(128,128)
    #設(shè)置無(wú)邊框
    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_())

運(yùn)行效果

pytho中 GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5不規(guī)則窗口實(shí)現(xiàn)與顯示GIF動(dòng)畫的示例分析

python主要應(yīng)用領(lǐng)域有哪些

1、云計(jì)算,典型應(yīng)用OpenStack。2、WEB前端開(kāi)發(fā),眾多大型網(wǎng)站均為Python開(kāi)發(fā)。3.人工智能應(yīng)用,基于大數(shù)據(jù)分析和深度學(xué)習(xí)而發(fā)展出來(lái)的人工智能本質(zhì)上已經(jīng)無(wú)法離開(kāi)python。4、系統(tǒng)運(yùn)維工程項(xiàng)目,自動(dòng)化運(yùn)維的標(biāo)配就是python+Django/flask。5、金融理財(cái)分析,量化交易,金融分析。6、大數(shù)據(jù)分析。

以上是“pytho中 GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5不規(guī)則窗口實(shí)現(xiàn)與顯示GIF動(dòng)畫的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI