liading效果
使用QMovie類來加載gif格式圖片,使用QLable標籤來做容器呈現gif,代碼如下
# -*- coding: UTF-8 -*-
'''
@Author: chenjianwen
@Date: 2020-06-03 15:15:27
@LastEditTime: 2020-06-13 11:26:45
@LastEditors: Please set LastEditors
@Description: In User Settings Edit
@FilePath: \DsafeshareClient\mask_module.py
'''
from PyQt5.Qt import *
from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
from PyQt5.QtGui import QIcon, QMovie
import threading,queue
import time
import sys,signal
class M_mask(QWidget):
def mouseMoveEvent(self, QMouseEvent):
QMouseEvent.accept()
sig_resize = pyqtSignal(int,int)
def __init__(self,l="",h=""):
super(M_mask,self).__init__()
if l == "":
l = 640
if h == "":
h = 512
self.resize(l,h)
self.m_ui()
self.raise_()
self.setWindowFlag(QtCore.Qt.FramelessWindowHint) # 隱藏邊框
self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) #置頂
def m_ui(self):
self.setWindowTitle("加載gif動畫")
self.label_01()
def label_01(self):
self.label = QLabel(self)
self.label.setScaledContents(True)
self.m_movie()
def m_movie(self):
self.movie = QMovie("./images/dengdai.gif")
self.label.setMovie(self.movie)
self.movie.start()
def resizeEvent(self, event):
self.label.resize(self.width(),self.height())
這是一個封裝好的類,在調用他的實例即可。
from mask_module import M_mask as menban
globalv.gl_menban = menban(login_pane.width(),login_pane.height())
globalv.gl_menban.show()
globalv.gl_menban.setVisible(False)
globalv.gl_menban.move(login_pane.pos())
globalv.gl_menban是一個全局的類,生存週期直到軟件關閉,因爲這個loading模板幾乎無時無刻不在使用,在呈現的時候,使用
setVisible(True),不呈現的時候使用setVisible(False)
globalv.gl_menban.move(login_pane.pos())這一句適當有鼠標點擊事件發生的時候,將移動到都某一需要的座標
當我們需要在不同頁面呈現不同的蒙版大小時,可調用resize,這時會觸發resizeEvent事件,來改變蒙版的大小
globalv.gl_menban.resize(self.width()-self.leftWidget.width()-globalv.gl_leftwidget_lc,self.height())
跟隨某一界面移動時,需要在某個界面的鼠標移動事件中加入如下兩句:
def mouseMoveEvent(self, QMouseEvent):
if Qt.LeftButton and self.m_flag:
self.move(QMouseEvent.globalPos()-self.m_Position)#更改窗口位置
QMouseEvent.accept()
globalv.gl_menban.mouseMoveEvent(QMouseEvent)
globalv.gl_menban.move(self.x()+self.leftWidget.width()+globalv.gl_leftwidget_lc,self.y())
loading都需要在其他窗口之前,所以一定要設置置頂
self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) #置頂
隱藏邊框
self.setWindowFlag(QtCore.Qt.FramelessWindowHint) # 隱藏邊框