Python GUI教程:在PyQt5中使用动画

本文介绍了如何使用PyQt5创建GUI并实现图片显示及动画效果。通过QLabel和QGraphicsScene、QGraphicsView展示图片,借助QPropertyAnimation实现小足球射门的动画,包括直线射门和曲线(香蕉球)射门效果。详细讲解了关键代码和动画原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、在图形界面显示图片的两种方法

一般情况下,想要在GUI中显示图片,我们会通过:
– 实例化一个QLable()部件;
– 实例化一个QPixmap()图形类;
– 通过QLabel()部件的setPixmap()方法设置QLabel()部件的图形;

就像如下代码所示:

# coding:utf-8
 
from PyQt5 import QtGui,QtWidgets
import sys
 
class MainUi(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.init_ui()
 
    def init_ui(self):
        self.setWindowTitle("动画使用-zmister.com") # 设置窗口标题
        self.resize(400,200) # 规定窗口大小
        self.main_widget = QtWidgets.QWidget() # 创建一个widget部件
        self.label = QtWidgets.QLabel(self.main_widget) # 创建一个文本标签部件
        png = QtGui.QPixmap() # 创建一个绘图类
        png.load("logo.png") # 从pngz中加载一个图片
        self.label.setPixmap(png) # 设置文本标签的图形
        self.setCentralWidget(self.main_widget)
 
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    gui = MainUi()
    gui.show()
    sys.exit(app.exec_())

但是这种方法没有办法实现对图片更多的控制。为了更好地对图形界面中的图片进行控制和管理,我们还需要使用到其他的类,比如QtWidgets中的QGraphicsScene类,QGraphicsScene提供了一个场景,用于对2D图形进行管理。同时,为了展示QGraphicsScene中的内容,我们还需要使用到QtWidgets中的QGraphicsView类来提供一个视图部件。

下面,我们就通过一个简单的例子来了解一下QGraphicsScene类和QGraphicsView类的使用。

首先是完整的代码,如下所示:

# coding:utf-8
 
from PyQt5 import QtGui,QtWidgets,QtCore
import sys
 
class MainUi(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.init_ui()
 
    def init_ui(self):
        self.setWindowTitle("动画使用-zmister.com") # 设置窗口标题
        self.resize(400,200) # 规定窗口大小
        self.main_widget = QtWidgets.QWidget() # 创建一个widget部件
 
        self.grapview = QtWidgets.QGraphicsView(self.main_widget) # 创建一个图形视图,继承自main_widget
        self.grapview.setGeometry(QtCore.QRect(10, 10, 380, 180)) # 设置图形视图的矩形区域
        self.scene = QtWidgets.QGraphicsScene() # 创建一个图形管理场景
        self.grapview.setScene(self.scene)
        png = QtGui.QPixmap() # 创建一个绘图类
        png.load("logo.png") # 从png中加载一个图片
        item = QtWidgets.QGraphicsPixmapItem(png) #
        self.scene.addItem(item)
 
        self.setCentralWidget(self.main_widget)
 
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    gui = MainUi()
    gui.show()
    sys.exit(app.exec_())

在这里面,基础的窗口代码与之前的代码类似,有区别且最核心的为以下几行代码。

首先,我们实例化创建了一个用于展示图形场景的图形视图QGraphicsView(),将它继承自self.main_widget主窗口部件:

self.grapview = QtWidgets.QGraphicsView(self.main_widget)

然后,我们实例化创建了一个图形场景管理类QGraphicsScene(),并通过setScene()方法将图形视图s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值