I need to show some matplotlib.pyplot 3d graphics in my pyqt interface window. Trying to implement something like this with the help of library matplotlib_backend_qtquick.
Here is my main.py
:
import os
import sys
from PyQt5 import QtQml, QtCore
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication
from PyQt5.QtQml import QQmlApplicationEngine
from matplotlib_backend_qtquick.backend_qtquickagg import FigureCanvasQtQuickAgg
os.environ['QT_QUICK_CONTROLS_STYLE'] = "Material"
QtQml.qmlRegisterType(FigureCanvasQtQuickAgg, "Backend", 1, 0, "FigureCanvas")
app = QApplication(sys.argv)
engine = QQmlApplicationEngine()
engine.load(QUrl.fromLocalFile('/home/vovi/PycharmProjects/pyqt5-qtquick2-example-master/pyqt5-qtquick2-example-master/pyqt5_qtquick2_example/qml/main.qml'))
if not engine.rootObjects():
sys.exit(-1)
sys.exit(app.exec_())
When I'm trying to run my main.py
I got a traceback:
Traceback (most recent call last):
File "/home/vovi/PycharmProjects/pyqt5-qtquick2-example-master/pyqt5-qtquick2-example-master/main.py", line 10, in <module>
from matplotlib_backend_qtquick.backend_qtquickagg import FigureCanvasQtQuickAgg
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>
from .backend_qtquick import (
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>
from matplotlib.backends.backend_qt5 import (
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)
Process finished with exit code 1
What am I doing wrong?
That matplotlib_backend_qtquick
library is not maintained anymore. It's broken now because at least it was using an internal symbol of an old Matplotlib version - MODIFIER_KEYS
. The README
says it worked with Matplotlib 3.2.1.
So either use Matplotlib 3.2.1 version or port the library yourself.