核桃派pyQT5实现GIF动图显示

代码大致意思:

1. 导入所需模块

import sys
from PyQt5.QtCore import Qt, QEvent
from PyQt5.QtGui import QMovie, QColor
from PyQt5.QtWidgets import QApplication, QLabel, QMainWindow

在这个步骤中我们导入了sys模块用于系统的相关功能,以及一线PyQt5库中的一些核心模块和空间

2. 创建主窗口类

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle("WalnutPi Paint") # 设置窗口标题
        self.setGeometry(100, 100, 320, 240) # 设置窗口在屏幕的位置与大小

在这一步中创建了一个命名为MainWindow的类 继承自QMainWindow ,该类包含一个构造函数__init__()在这个函数中调用了父类QMainWindow的构造函数,同时我们定义了一个*initui()*的方法来初始化主窗口的界面。

在initui()方法中,我们设置了窗口的标题为" WalnutPi Paint " 并设置在屏幕的位置:(100_x,100_y),大小为(320_宽x240_高)

3.创建第一个,第二个QLabel和QMovie对象

# 创建第一个QLabel用于显示第一个GIF图
        label1 = QLabel(self)
        label1.setScaledContents(True)
        movie1 = QMovie("1.gif")  # 替换为你的GIF文件名
        label1.setMovie(movie1)
        label1.setGeometry(0, 0, 475, 305)  # 自定义位置和大小

        # 创建第二个QLabel用于显示第二个GIF图
        label2 = QLabel(self)
        label2.setScaledContents(True)
        movie2 = QMovie("earth.gif")  # 手动选择你自己的路径列如:"path/to/your/gif/earth.gif"
        label2.setMovie(movie2)
        label2.setGeometry(180, 0, 100, 100)  # 自定义位置和大小 

在这一步中创建了一个QLabel对象和QMovie对象,并将其作为主窗口的子部件添加进去。

我们通过setScaledContents(True)方法设置了label1,label2的内容自适应窗口大小。
创建了两个
QMovie
对象movie1,movie2 并提供了可替换的为你自己 .GIF 文件路径。

此处的QMovie类用于播放GIF动画。

5.设置显示主窗口的背景色

# 设置窗口背景颜色为黑色
        self.setStyleSheet("background-color: black;") # 修改单词:black 即可更换颜色

        # 自适应屏幕大小
        screenGeometry = QApplication.desktop().screenGeometry()
        self.resize(screenGeometry.width(), screenGeometry.height())

        # 启动动画
        movie1.start()
        movie2.start()

设置窗口的背景颜色为黑色使用了 setstylesheet() 方法通过将样式字符串作为参数传递给该方法,就可以修改背景颜色,字体,大小等。

自适应屏幕大小使用resize() 方法,通过将屏幕的宽高作为参数传递给该方法并调整大小。

启动动画使用了start()方法。通过调用start()方法,可以开始播放QMovie对象中加载的动画。

6. 切换到全屏显示模式并创建ESC快捷键关闭窗口

# 切换到全屏显示模式
        self.showFullScreen()
     #  self.show()   # 窗口显示 删掉注释把全屏显示注释掉救可以用了
        
        # 创建ESC快捷键,按下关闭窗口
    def event(self, event):    # 重写事件处理方法,处理键盘事件
        if event.type() == QEvent.KeyPress and event.key() == Qt.Key_Escape:
                self.close()   # 如果按下的是Esc键,则关闭窗口
        return super().event(event)  # 调用父类的event方法进行默认的事件处理

通过调用self.showFullScreen() 方法窗口将切换到全屏显示模式。窗口填充满整个屏幕,并隐藏标题栏和工具栏这些窗口组件。

重写事件处理方法:
通过定义 event() 方法并重写它,我们可以自定义窗口的时间出路行为。在这个例子中,我们重写了*event()*方法来处理键盘事件。

代码的逻辑如下:

  • 当事件的类型时QEvent.KeyPress (键盘按下事件)且按下的键时Qt.key_Escape (Esc键)时,执行以下操作:

  • 调用self.cloce()方法关闭窗口,退出应用程序。

  • 最后,通过调用super().event(event)将事件传递父类以进行默认的事件处理

通过重写事件的处理方法,我们往后可以大概可以根据这个方法照蛇画龙 实现对按键的自定义响应 ,从而增强或修改窗口的行为。

总结一下:pyQT5的GIF动图大概就这样如果后面你们想自己更换图片的话设置坐标不明白可以评论区留言 我来解决这个源码运行不妥的问题。
今天就先到这了,如你观看过程中发现了不对的地方,恳请您指点出来,谢谢啦!!!
7900aecaf3fbed13e6abe87fc5905e7a
源码在压缩包,全部解压到 核桃派 home/pi
即可使用
核桃派pyQT5实现gif动图显示zip.zip (1.6 MB)

3 Likes

大佬,有没有音乐频谱图的教程啊

1 Like

暂时没有,等会看看。
这个东西实现出来应该没啥问题

1 Like