Skip to content

Commit 11c0985

Browse files
committed
Merge pull request matplotlib#3632 from jenshnielsen/qt_fix
BUG : Fix handling QT_API ENVS
2 parents a95057e + 41c9589 commit 11c0985

File tree

1 file changed

+24
-8
lines changed

1 file changed

+24
-8
lines changed

lib/matplotlib/backends/qt_compat.py

+24-8
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,37 @@
1414
QT_API_PYSIDE = 'PySide' # only supports Version 2 API
1515
QT_API_PYQT5 = 'PyQt5' # use PyQt5 API; Version 2 with module shim
1616

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
1922
# ETS requires the version 2 of PyQt4, which is not the platform
2023
# default for Python 2.x.
2124

2225
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):
2435
try:
25-
QT_API = ETS[QT_API_ENV]
36+
QT_ENV_MAJOR_VERSION = ETS[QT_API_ENV][1]
2637
except KeyError:
2738
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.
3248
if rcParams['backend'] == 'Qt5Agg':
3349
QT_API = rcParams['backend.qt5']
3450
else:

0 commit comments

Comments
 (0)