使用pyside2写一个用信号和槽函数,点击按钮进行matplotlib画板刷新动图绘图
时间: 2023-05-14 21:07:16 浏览: 74
可以使用以下代码实现:
```python
import sys
from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton
from PySide2.QtCore import Slot
import matplotlib.pyplot as plt
import numpy as np
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建按钮
self.button = QPushButton("绘制动图", self)
self.button.setGeometry(50, 50, 100, 50)
# 绑定按钮点击事件
self.button.clicked.connect(self.plot_animation)
@Slot()
def plot_animation(self):
# 清空画板
plt.clf()
# 生成数据
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)
# 绘制动图
for i in range(10):
plt.plot(x, y * i / 10)
# 刷新画板
plt.pause(0.1)
self.button.repaint()
def closeEvent(self, event):
# 关闭窗口时停止动图
plt.close()
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
这段代码使用 PySide2 创建了一个窗口,其中包含一个按钮。当点击按钮时,会绘制一个动图,每次绘制时都会清空画板并重新绘制。在绘制过程中,使用 `plt.pause(0.1)` 暂停 0.1 秒,以便观察动图的变化。同时,使用 `self.button.repaint()` 刷新按钮,以便在绘制过程中按钮能够正常响应。当关闭窗口时,会停止动图的绘制。