|
14 | 14 | QT_API_PYSIDE = 'PySide' # only supports Version 2 API
|
15 | 15 | QT_API_PYQT5 = 'PyQt5' # use PyQt5 API; Version 2 with module shim
|
16 | 16 |
|
17 |
| -ETS = dict(pyqt=QT_API_PYQTv2, pyside=QT_API_PYSIDE, pyqt5=QT_API_PYQT5) |
18 |
| -# If the ETS QT_API environment variable is set, use it. Note that |
| 17 | +ETS = dict(pyqt=(QT_API_PYQTv2, 4), pyside=(QT_API_PYSIDE, 4), |
| 18 | + pyqt5=(QT_API_PYQT5, 5)) |
| 19 | +# ETS is a dict of env variable to (QT_API, QT_MAJOR_VERSION) |
| 20 | +# If the ETS QT_API environment variable is set, use it, but only |
| 21 | +# if the varible if of the same major QT version. Note that |
19 | 22 | # ETS requires the version 2 of PyQt4, which is not the platform
|
20 | 23 | # default for Python 2.x.
|
21 | 24 |
|
22 | 25 | QT_API_ENV = os.environ.get('QT_API')
|
23 |
| -if QT_API_ENV is not None: |
| 26 | + |
| 27 | +if rcParams['backend'] == 'Qt5Agg': |
| 28 | + QT_RC_MAJOR_VERSION = 5 |
| 29 | +else: |
| 30 | + QT_RC_MAJOR_VERSION = 4 |
| 31 | + |
| 32 | +QT_API = None |
| 33 | + |
| 34 | +if (QT_API_ENV is not None): |
24 | 35 | try:
|
25 |
| - QT_API = ETS[QT_API_ENV] |
| 36 | + QT_ENV_MAJOR_VERSION = ETS[QT_API_ENV][1] |
26 | 37 | except KeyError:
|
27 | 38 | raise RuntimeError(
|
28 |
| - 'Unrecognized environment variable %r, valid values are: %r or %r' % |
29 |
| - (QT_API_ENV, 'pyqt', 'pyside', 'pyqt5')) |
30 |
| -else: |
31 |
| - # No ETS environment, so use rcParams. |
| 39 | + ('Unrecognized environment variable %r, valid values are:' |
| 40 | + ' %r, %r or %r' % (QT_API_ENV, 'pyqt', 'pyside', 'pyqt5'))) |
| 41 | + if QT_ENV_MAJOR_VERSION == QT_RC_MAJOR_VERSION: |
| 42 | + # Only if backend and env qt major version are |
| 43 | + # compatible use the env variable. |
| 44 | + QT_API = ETS[QT_API_ENV][0] |
| 45 | + |
| 46 | +if QT_API is None: |
| 47 | + # No ETS environment or incompatible so use rcParams. |
32 | 48 | if rcParams['backend'] == 'Qt5Agg':
|
33 | 49 | QT_API = rcParams['backend.qt5']
|
34 | 50 | else:
|
|
0 commit comments