PySide6 加载matplotlib,我计划用PySide6中的graphicsView控件绘图,但图是用matplotlib绘制的,matplotlib绘制的图在graphicsView控件中显示。求一个完整的,可运行,有备注的代码。
6条回答 默认 最新
- |__WhoAmI__| 2023-01-02 23:06关注
这是一个使用 PySide6 和 Matplotlib 绘制图形的例子。它使用 Matplotlib 的 FigureCanvas 类将图形绘制到 QWidget 中,然后使用 QGraphicsView 将图形显示出来。
需要先安装 PySide6 和 Matplotlib:
pip install pyside6 matplotlib
import sys import random from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton from PySide6.QtCore import Qt from matplotlib.figure import Figure from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas class MatplotlibWidget(QWidget): def __init__(self, parent=None): super().__init__(parent) # Create a Matplotlib figure and a FigureCanvas to display it self.figure = Figure() self.canvas = FigureCanvas(self.figure) # Create a QGraphicsView to display the FigureCanvas self.view = QGraphicsView(self) self.view.setRenderHint(QGraphicsView.Antialiasing) self.view.setRenderHint(QGraphicsView.SmoothPixmapTransform) self.view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.view.setResizeAnchor(QGraphicsView.AnchorViewCenter) self.view.setTransformationAnchor(QGraphicsView.AnchorUnderMouse) self.view.setOptimizationFlag(QGraphicsView.DontAdjustForAntialiasing, True) self.view.setOptimizationFlag(QGraphicsView.DontSavePainterState, True) # Create a QGraphicsScene to hold the FigureCanvas self.scene = QGraphicsScene(self) self.scene.addWidget(self.canvas) self.view.setScene(self.scene) # Lay out the widget layout = QVBoxLayout(self) layout.addWidget(self.view) self.setLayout(layout) def plot(self): # Generate some random data data = [random.random() for _ in range(10)] # Clear the figure and redraw the plot self.figure.clear() ax = self.figure.add_subplot(111) ax.plot(data, "r-") self.canvas.draw() if __name__ == "__main__": app = QApplication(sys.argv) window = QMainWindow() # Create a MatplotlibWidget and add it to the window plot_widget = MatplotlibWidget() window.setCentralWidget(plot_widget) # Create a button to redraw the plot button = QPushButton("Redraw") button.clicked.connect(plot_widget.plot) window.addToolBar(button) window.show() app.exec_()
仅供参考,望采纳,谢谢。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥20 西南科技大学数字信号处理
- ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
- ¥30 STM32 INMP441无法读取数据
- ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
- ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
- ¥15 用visualstudio2022创建vue项目后无法启动
- ¥15 x趋于0时tanx-sinx极限可以拆开算吗
- ¥15 pyqt信号槽连接写法
- ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
- ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。