PyQt5技术分享:实现加载界面GIF的呈现

需求

要实现加载界面我们的需求有:首先GIF的呈现,加载窗口的呈现,主窗口的虚化及不可操作,下面我们一一实现上面的需求。

GIF的呈现

QLabel类是Qt中一种用来呈现普通文本,HTML文本和静态图片的容器,要实现标签呈现动图需要用到QLabel.setMovie(self,QMovie)函数,其中QMovie是Qt中用来实现GIF图片动起来的容器

下面我们用代码来说明上述过程

 # 加载动画画面
        self.loading_gif = QMovie('./img/loading_b.gif')	# 加载动图
        self.loading_label = QLabel(self)		# 创建QLabel标签
        self.loading_label.setMovie(self.loading_gif)	# 将动图装载到标签容器里面
        self.loading_gif.start()	# 让动图开始动起来
        # self.loading_gif.stop()	# 让动图停止,一般情况下不需要停止动图,只需要关闭动图呈现的窗口界面即可

这样一个能呈现动图的QLabel就创建好了

加载窗口的呈现

我们要实现加载窗口就需要创建一个QWidget界面,而整个界面就动图一个标签,界面还需要进行透明化设置
代码实现:

# 加载动画的窗口
class Loading_Win(QWidget):
    def __init__(self,mainWin):
        super(Loading_Win, self).__init__()
        # 获取主窗口的坐标
        self.m_winX = mainWin.x()
        self.m_winY = mainWin.y()
        self.initUI()
    def initUI(self):
        # 设置窗口基础类型
        self.resize(250,250)	# 设置加载界面的大小
        self.move(self.m_winX+340,self.m_winY+155)	# 移动加载界面到主窗口的中心
        self.setWindowFlags(Qt.FramelessWindowHint | Qt.Dialog | Qt.WindowStaysOnTopHint) # 设置窗口无边框|对话框|置顶模式
        # 设置背景透明
        self.setAttribute(Qt.WA_TranslucentBackground)
        # 加载动画画面
        self.loading_gif = QMovie('./img/loading_b.gif')
        self.loading_label = QLabel(self)
        self.loading_label.setMovie(self.loading_gif)
        self.loading_gif.start()

主窗口背景虚化即不可操作

要实现主窗口不可操作就需要设置窗口的mainWindow.WindowModality属性
Qt中WindowModality属性有三种:

常量含义
Qt.NonModal窗口不是模式窗口(默认)
Qt.WindowModal窗口是单窗口层次结构模式,并阻止其父窗口及其他父窗口和组父窗口的所有兄弟窗口获得输入
Qt.ApplicationModal窗口是应用的模式窗口,阻塞所有其他应用窗口获得输入
self.setWindowModality(Qt.ApplicationModal)	# 设置主窗口不可操作
Loading_Gif.show()	# 呈现加载界面
self.setWindowModality(Qt.NonModal)	# 恢复正常模式
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MGodmonkey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值