|
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"insys.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 |
| -elifrcParams["backend"]=="Qt5Agg": |
| 52 | +elifrcParams["backend"]in ["Qt5Agg","Qt5Cairo"]: |
48 | 53 | ifQT_API_ENV=="pyqt5":
|
49 | 54 | dict.__setitem__(rcParams,"backend.qt5",QT_API_PYQT5)
|
50 | 55 | elifQT_API_ENV=="pyside2":
|
51 | 56 | dict.__setitem__(rcParams,"backend.qt5",QT_API_PYSIDE2)
|
52 | 57 | QT_API=dict.__getitem__(rcParams,"backend.qt5")
|
53 |
| -elifrcParams["backend"]=="Qt4Agg": |
| 58 | +elifrcParams["backend"]in ["Qt4Agg","Qt4Cairo"]: |
54 | 59 | ifQT_API_ENV=="pyqt4":
|
55 | 60 | dict.__setitem__(rcParams,"backend.qt4",QT_API_PYQTv2)
|
56 | 61 | elifQT_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 | +exceptKeyError: |
| 70 | +raiseRuntimeError( |
| 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():
|
|