使用pyside2写一个用信号和槽函数,点击按钮进行matplotlib画板刷新绘图
时间: 2023-05-14 10:07:12 浏览: 127
好的,以下是使用 PySide2 编写的示例代码,可以实现点击按钮刷新 matplotlib 画板绘图:
```python
import sys
import numpy as np
import matplotlib.pyplot as plt
from PySide2.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QPushButton
from PySide2.QtCore import Slot, Qt
from PySide2.QtGui import QIcon
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Matplotlib Demo")
self.setWindowIcon(QIcon("icon.png"))
self.setGeometry(100, 100, 800, 600)
# 创建一个 QWidget 作为主窗口的中心部件
self.central_widget = QWidget(self)
self.setCentralWidget(self.central_widget)
# 创建一个 QVBoxLayout 布局,并将其设置为中心部件的布局
self.layout = QVBoxLayout(self.central_widget)
# 创建一个 Matplotlib 画板,并将其添加到布局中
self.figure = plt.figure()
self.canvas = FigureCanvas(self.figure)
self.layout.addWidget(self.canvas)
# 创建一个按钮,并将其添加到布局中
self.button = QPushButton("Refresh Plot", self.central_widget)
self.button.clicked.connect(self.refresh_plot)
self.layout.addWidget(self.button)
# 初始化绘图
self.plot()
def plot(self):
# 绘制一个正弦曲线
x = np.linspace(0, 10, 1000)
y = np.sin(x)
self.figure.clear()
ax = self.figure.add_subplot(111)
ax.plot(x, y)
self.canvas.draw()
@Slot()
def refresh_plot(self):
# 刷新绘图
self.plot()
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
这个程序创建了一个 PySide2 应用程序窗口,其中包含一个 Matplotlib 画板和一个按钮。当用户点击按钮时,程序会重新绘制一个正弦曲线并刷新画板。
阅读全文