backend_qtagg, #backend_qtcairo

HINWEIS Diese Backends werden hier nicht (automatisch) dokumentiert, um das Hinzufügen einer Abhängigkeit zum Erstellen der Dokumentation zu vermeiden.

Qt-Bindungen #

Derzeit gibt es 2 aktiv unterstützte Qt-Versionen, Qt5 und Qt6, und zwei unterstützte Python-Bindungen pro Version – PyQt5 und PySide2 für Qt5 und PyQt6 und PySide6 für Qt6 [ 1 ] . Während sowohl PyQt als auch Qt for Python (alias PySide) die zugrunde liegende C++-API, die sie umhüllen, genau widerspiegeln, sind sie kein direkter Ersatz füreinander [ 2 ] . Um dies zu berücksichtigen, verfügt Matplotlib über eine interne API-Kompatibilitätsschicht, matplotlib.backends.qt_compatdie unsere Anforderungen abdeckt. Obwohl es sich um ein öffentliches Modul handelt, betrachten wir es nicht als stabile benutzerorientierte API und es kann sich ohne Vorankündigung ändern [ 3 ] .

Früher hatten die Qt-Backends von Matplotlib die Qt-Versionsnummer im Namen, sowohl im Modul als auch im rcParams["backend"]Wert (z . B. matplotlib.backends.backend_qt4aggund matplotlib.backends.backend_qt5agg). Als Teil der Unterstützung für Qt6 konnten wir jedoch sowohl Qt5 als auch Qt6 mit einer einzigen Implementierung unterstützen, wobei die gesamte Qt-Version und Bindungsunterstützung in qt_compat. Ein Großteil des Renderer-agnostischen Qt-Codes ist jetzt in matplotlib.backends.backend_qtmit Spezialisierung für AGG in backend_qtaggund cairo in backend_qtcairo.

Die Bindung wird zur Laufzeit basierend darauf ausgewählt, welche Bindungen bereits importiert wurden (durch Prüfen auf das QtCoreUnterpaket), dann durch dieQT_API Umgebungsvariable und schließlich durch die rcParams["backend"]. In allen Fällen, in denen wir suchen müssen, ist die Reihenfolge PyQt6, PySide6, PyQt5, PySide2. Siehe Wie wähle ich die Qt-Implementierung aus? für Gebrauchsanweisungen.

Die backend_qt5, backend_qt5agg, und backend_qt5cairowerden bereitgestellt und erzwingen die Verwendung einer Qt5-Bindung für die Abwärtskompatibilität. Von ihrer Verwendung wird abgeraten (aber nicht veraltet) und backend_qt, backend_qtagg, oder backend_qtcairosollten stattdessen bevorzugt werden. Diese Module werden jedoch nicht veraltet sein, bis wir die Unterstützung für Qt5 eingestellt haben.