导语
最近想给我的项目添加动态效果,我想了想,最简单的办法就是使用GIF动图,实现一些高级特效
效果图
制作方法
先放置一个空的Qlabel
# 创建 QLabel 用于显示 GIF 动画
label = QLabel()
然后创建movie对象,用于加载gif,动图可以从网上下载
# 创建 QMovie 对象,加载 GIF 动画
movie = QMovie(r"二哈.gif")
最后把movie对象绑定在Qlabel上,并启动动画
# 将 QMovie 对象设置到 QLabel
label.setMovie(movie)
# 启动 GIF 动画
movie.start()
最后可以实现一个简单的动画效果
更多注意事项
label的大小默认是和gif图片的实际大小一致的
由于在实际开发环境中,label往往不能随着图片的大小而变化,我们需要约束label的高宽,并设置图片在label里面的显示方位,设置方位的目的是确保图片能尽可能显示完整
# label尺寸和显示方位居中
label.setFixedSize(300, 200)
label.setAlignment(Qt.AlignmentFlag.AlignCenter)
以上代码设置了label的高度和宽度,并确保图片内容在中间显示
不设置居中对齐则图片会从左边开始显示(默认左对齐)
完整代码
替换动态图片gif路径即可运行,
from PySide6.QtWidgets import QApplication, QLabel, QWidget, QVBoxLayout
from PySide6.QtGui import QMovie
from PySide6.QtCore import Qt
app = QApplication([])
# 创建主窗口
window = QWidget()
layout = QVBoxLayout()
# 创建 QLabel 用于显示 GIF 动画
label = QLabel()
# 创建 QMovie 对象,加载 GIF 动画
movie = QMovie(r"二哈动态表情包_爱给网_aigei_com.gif")
# 将 QMovie 对象设置到 QLabel
label.setMovie(movie)
# 启动 GIF 动画
movie.start()
# 设置label大小和对齐方式
# label.setFixedSize(150, 100)
# label.setAlignment(Qt.AlignmentFlag.AlignCenter)
# 将 QLabel 添加到布局中
layout.addWidget(label)
window.setLayout(layout)
# 显示主窗口
window.show()
app.exec()