|
27 | 27 | QT_API_PYQTv2 = "PyQt4v2"
|
28 | 28 | QT_API_PYSIDE = "PySide"
|
29 | 29 | QT_API_PYQT = "PyQt4" # Use the old sip v1 API (Py3 defaults to v2).
|
30 |
| -QT_API_ENV = os.environ.get('QT_API') |
| 30 | +QT_API_ENV = os.environ.get("QT_API") |
| 31 | +# Mapping of QT_API_ENV to requested binding. ETS does not support PyQt4v1. |
| 32 | +# (https://github.com/enthought/pyface/blob/master/pyface/qt/__init__.py) |
| 33 | +_ETS = {"pyqt5": QT_API_PYQT5, "pyside2": QT_API_PYSIDE2, |
| 34 | + "pyqt": QT_API_PYQTv2, "pyside": QT_API_PYSIDE, |
| 35 | + None: None} |
31 | 36 | # First, check if anything is already imported.
|
32 | 37 | if "PyQt5" in sys.modules:
|
33 | 38 | QT_API = QT_API_PYQT5
|
|
44 | 49 | # Otherwise, check the QT_API environment variable (from Enthought). This can
|
45 | 50 | # only override the binding, not the backend (in other words, we check that the
|
46 | 51 | # requested backend actually matches).
|
47 |
| -elif rcParams["backend"] == "Qt5Agg": |
| 52 | +elif rcParams["backend"] in ["Qt5Agg", "Qt5Cairo"]: |
48 | 53 | if QT_API_ENV == "pyqt5":
|
49 | 54 | dict.__setitem__(rcParams, "backend.qt5", QT_API_PYQT5)
|
50 | 55 | elif QT_API_ENV == "pyside2":
|
51 | 56 | dict.__setitem__(rcParams, "backend.qt5", QT_API_PYSIDE2)
|
52 | 57 | QT_API = dict.__getitem__(rcParams, "backend.qt5")
|
53 |
| -elif rcParams["backend"] == "Qt4Agg": |
| 58 | +elif rcParams["backend"] in ["Qt4Agg", "Qt4Cairo"]: |
54 | 59 | if QT_API_ENV == "pyqt4":
|
55 | 60 | dict.__setitem__(rcParams, "backend.qt4", QT_API_PYQTv2)
|
56 | 61 | elif QT_API_ENV == "pyside":
|
|
59 | 64 | # A non-Qt backend was selected but we still got there (possible, e.g., when
|
60 | 65 | # fully manually embedding Matplotlib in a Qt app without using pyplot).
|
61 | 66 | else:
|
62 |
| - QT_API = None |
| 67 | + try: |
| 68 | + QT_API = _ETS[QT_API_ENV] |
| 69 | + except KeyError: |
| 70 | + raise RuntimeError( |
| 71 | + "The environment variable QT_API has the unrecognized value {!r};" |
| 72 | + "valid values are 'pyqt5', 'pyside2', 'pyqt', and 'pyside'") |
63 | 73 |
|
64 | 74 |
|
65 | 75 | def _setup_pyqt5():
|
|
0 commit comments