pyqt5-2.加载gif蒙版实现等待效果
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@Desc
·
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) # 隐藏边框
更多推荐
已为社区贡献1条内容
所有评论(0)