使用matplotlib_backend_qtquick在pyqt接口中集成matplotlib

mfuanj7w  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(157)

我需要在pyqt界面窗口中显示一些matplotlib.pyplot 3d图形。尝试在matplotlib_backend_qtquick库的帮助下实现something like this
下面是我的main.py

  1. import os
  2. import sys
  3. from PyQt5 import QtQml, QtCore
  4. from PyQt5.QtCore import QUrl
  5. from PyQt5.QtWidgets import QApplication
  6. from PyQt5.QtQml import QQmlApplicationEngine
  7. from matplotlib_backend_qtquick.backend_qtquickagg import FigureCanvasQtQuickAgg
  8. os.environ['QT_QUICK_CONTROLS_STYLE'] = "Material"
  9. QtQml.qmlRegisterType(FigureCanvasQtQuickAgg, "Backend", 1, 0, "FigureCanvas")
  10. app = QApplication(sys.argv)
  11. engine = QQmlApplicationEngine()
  12. engine.load(QUrl.fromLocalFile('/home/vovi/PycharmProjects/pyqt5-qtquick2-example-master/pyqt5-qtquick2-example-master/pyqt5_qtquick2_example/qml/main.qml'))
  13. if not engine.rootObjects():
  14. sys.exit(-1)
  15. sys.exit(app.exec_())

当我试图运行我的main.py时,我得到了一个回溯:

  1. Traceback (most recent call last):
  2. File "/home/vovi/PycharmProjects/pyqt5-qtquick2-example-master/pyqt5-qtquick2-example-master/main.py", line 10, in <module>
  3. from matplotlib_backend_qtquick.backend_qtquickagg import FigureCanvasQtQuickAgg
  4. File "/home/vovi/PycharmProjects/pyqt5-qtquick2-example-master/pyqt5-qtquick2-example-master/venv/lib/python3.11/site-packages/matplotlib_backend_qtquick/backend_qtquickagg.py", line 7, in <module>
  5. from .backend_qtquick import (
  6. File "/home/vovi/PycharmProjects/pyqt5-qtquick2-example-master/pyqt5-qtquick2-example-master/venv/lib/python3.11/site-packages/matplotlib_backend_qtquick/backend_qtquick.py", line 11, in <module>
  7. from matplotlib.backends.backend_qt5 import (
  8. ImportError: cannot import name 'MODIFIER_KEYS' from 'matplotlib.backends.backend_qt5' (/home/vovi/PycharmProjects/pyqt5-qtquick2-example-master/pyqt5-qtquick2-example-master/venv/lib/python3.11/site-packages/matplotlib/backends/backend_qt5.py)
  9. Process finished with exit code 1

我做错了什么?

1dkrff03

1dkrff031#

matplotlib_backend_qtquick库不再维护。它现在被破坏了,因为至少它使用了旧Matplotlib版本的内部符号-MODIFIER_KEYSREADME表示它与Matplotlib 3.2.1兼容。
因此,要么使用Matplotlib 3.2.1版本,要么自己移植库。

相关问题