Matplotlib 似乎与 Spyder 中的 PySide6 不兼容

问题描述 投票:0回答:1

我正在使用 Spyder 开发

Python
程序,目前我正在努力将交互式图形合并到项目中。我已经尝试过将
plotly
QWebEngineView
结合起来,它产生了令人愉快的结果。即使鼠标光标位于
QScrollArea
图表上方,我也付出了巨大的努力,使外部
plotly
仍然可滚动,但不成功,之后我放弃了。现在我正在尝试合并一个
matplotlib
图表。然而,
Spyder
环境坚决阻止我启动并运行我的项目!

该程序现在非常大,但我给出了一个最小的示例来描述完全相同的问题。该示例取自此网站

import sys
import matplotlib

matplotlib.use('Qt5Agg')

from PySide6.QtWidgets import QMainWindow, QApplication

from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg
from matplotlib.figure import Figure


class MplCanvas(FigureCanvasQTAgg):

    def __init__(self, parent=None, width=5, height=4, dpi=100):
        fig = Figure(figsize=(width, height), dpi=dpi)
        self.axes = fig.add_subplot(111)
        super(MplCanvas, self).__init__(fig)


class MainWindow(QMainWindow):

    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)

        # Create the maptlotlib FigureCanvas object,
        # which defines a single set of axes as self.axes.
        sc = MplCanvas(self, width=5, height=4, dpi=100)
        sc.axes.plot([0,1,2,3,4], [10,1,20,3,40])
        self.setCentralWidget(sc)

        self.show()

app = QApplication.instance()
if not app:
    app = QApplication(sys.argv)
w = MainWindow()
app.exec()

错误:

...
File c:\path\to\the\project.py:29 in __init__
    self.setCentralWidget(sc)

TypeError: 'PySide6.QtWidgets.QMainWindow.setCentralWidget' called with wrong argument types:
  PySide6.QtWidgets.QMainWindow.setCentralWidget(MplCanvas)
Supported signatures:
  PySide6.QtWidgets.QMainWindow.setCentralWidget(PySide6.QtWidgets.QWidget)

我花了几天时间查阅文献并在互联网上寻找解决方案。就连人工智能也“注意到”这个问题已经是已知的,并得出结论:“不幸的是,

matplotlib
尚未与
PySide6
兼容”!我又差点放弃了一次。

在命令提示符下通过

python .\project.py
运行我的项目后,我意识到我的代码(以及给定的示例)就像一个魅力,没有任何错误。

我的问题:如何让

matplotlib
PySide6
环境中与
Spyder
完全兼容?

matplotlib graph spyder pyside6
1个回答
0
投票

我也有同样的问题。该问题似乎是由于 PyQt 包和 Pyside6 的一些重叠而发生的。对我来说,它可以从 Anaconda Python 环境中卸载 PyQt。这是一个非常丑陋的解决方法,因为 Spyder 是一个 QT 应用程序,如果没有这个包,将无法启动。如果您已经打开 Spyder 然后卸载该软件包,它将起作用... 我仍在寻找其他解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.