首页 > 解决方案 > PyQt5 界面中的动画 matplotlib

问题描述

我尝试使用带有 Python3 的 matplotlib 在界面中制作动画图。

目标是制作一个使用按钮开始动画的情节。这是一个简约的代码:

import sys, os, random
from PyQt5 import QtCore
from PyQt5.QtWidgets import *
import numpy as np
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
import matplotlib.animation as animation
import matplotlib
import matplotlib.pyplot as plt

class AnimationWidget(QWidget):
    def __init__(self):
        QMainWindow.__init__(self)
        vbox = QVBoxLayout()
        self.figure = matplotlib.figure.Figure()
        self.canvas = FigureCanvas(self.figure)
        vbox.addWidget(self.canvas)
        hbox = QHBoxLayout()
        self.animate_button = QPushButton("animate", self)
        self.animate_button.clicked.connect(self.on_animate)
        hbox.addWidget(self.animate_button)
        vbox.addLayout(hbox)
        self.setLayout(vbox)
        self.x = np.linspace(0, 4*np.pi, 400)
        self.phase = 0.0
        self.y = np.sin(self.x + self.phase)
        self.axes = self.figure.add_subplot(111)
        self.axes.plot(self.x, self.y)

    def update(self, i):
        self.phase += np.pi/10.
        y = np.sin(self.x + self.phase)
        self.axes.plot(self.x, y)

    def on_animate(self):
        self.ani = animation.FuncAnimation(self.figure, self.update, interval=500)

if __name__ == "__main__":
    qApp = QApplication(sys.argv)
    aw = AnimationWidget()
    aw.show()
    sys.exit(qApp.exec_())

当我按下动画按钮时,动画功能什么也不做。事实上,当按下按钮时,即使更新功能内的打印也不起作用。

知道为什么它不起作用吗?

标签: pythonpython-3.xmatplotlib

解决方案


推荐阅读