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无用
悬赏问题
- ¥15 宇视监控服务器无法登录
- ¥15 PADS Logic 原理图
- ¥15 PADS Logic 图标
- ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
- ¥20 气象站点数据求取中~
- ¥15 如何获取APP内弹出的网址链接
- ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
- ¥50 STM32单片机传感器读取错误
- ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据
- ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)