matplotlib.backends.backend_qtagg
, matplotlib.backends.backend_qtcairo
#
注意 这些 后端 未在此处(自动)记录,以避免增加构建文档的依赖。
Qt 绑定#
目前有 2 个积极支持的 Qt 版本,Qt5 和 Qt6,以及每个版本支持的两个 Python 绑定——Qt5 的 PyQt5 和 PySide2,以及 Qt6 的 PyQt6 和 PySide6 [1]。Matplotlib 的 qtagg 和 qtcairo 后端(matplotlib.backends.backend_qtagg
和 matplotlib.backend.backend_qtcairo
)支持所有这些绑定,其通用部分在 matplotlib.backends.backend_qt
模块中进行了提炼。
在运行时,这些后端按如下方式选择实际使用的绑定:
如果某个绑定的
QtCore
子包已被导入,则选择该绑定(检查顺序为PyQt6
,PySide6
,PyQt5
,PySide2
)。如果
QT_API
环境变量被设置为 "PyQt6"、"PySide6"、"PyQt5"、"PySide2"(不区分大小写)中的一个,则选择该绑定。(另请参阅环境变量的文档。)否则,按
PyQt6
,PySide6
,PyQt5
,PySide2
的顺序选择第一个可用的后端。
过去,Matplotlib 曾为每个 Qt 版本提供独立的后端(例如 qt4agg/matplotlib.backends.backend_qt4agg
和 qt5agg/matplotlib.backends.backend_qt5agg
)。在添加对 Qt6 的支持时,此方案被弃用。为了向后兼容,qt5agg/backend_qt5agg
和 qt5cairo/backend_qt5cairo
仍然可用;选择其中一个后端会强制使用 Qt5 绑定。不鼓励使用它们,而应优先使用 backend_qtagg
或 backend_qtcairo
。然而,在我们放弃对 Qt5 的支持之前,这些模块不会被弃用。
虽然 PyQt 和 Qt for Python (即 PySide) 都紧密模仿了它们所封装的底层 C++ API,但它们并非彼此的直接替代品 [2]。考虑到这一点,Matplotlib 在 matplotlib.backends.qt_compat
中设有一个内部 API 兼容层,以满足我们的需求。尽管这是一个公共模块,但我们不认为它是一个稳定的面向用户的 API,它可能会在不发出警告的情况下发生变化 [3]。