Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 3597917

Browse files
committed
Merge pull request #2142 from punchagan/fix-qt-import
Try importing PySide, if we can't find sip.
2 parents 43bf56e + f85e322 commit 3597917

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

doc/faq/usage_faq.rst

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,20 @@ macosx Cocoa rendering in OSX windows
284284
.. _TkInter: http://wiki.python.org/moin/TkInter
285285
.. _PyQt4: http://www.riverbankcomputing.co.uk/software/pyqt/intro
286286

287+
How do I select PyQt4 or PySide?
288+
========================================
287289

290+
You can choose either PyQt4 or PySide when using the `qt4` backend by setting
291+
the appropriate value for `backend.qt4` in your :file:`matplotlibrc` file. The
292+
default value is `PyQt4`.
293+
294+
The setting in your :file:`matplotlibrc` file can be overridden by setting the
295+
`QT_API` environment variable to either `pyqt` or `pyside` to use `PyQt4` or
296+
`PySide`, respectively.
297+
298+
Since the default value for the bindings to be used is `PyQt4`,
299+
:mod:`matplotlib` first tries to import it, if the import fails, it tries to
300+
import `PySide`.
288301

289302
.. _interactive-mode:
290303

lib/matplotlib/backends/qt4_compat.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,19 @@
3131
# of file dialog.
3232
_getSaveFileName = None
3333

34+
# Flag to check if sip could be imported
35+
_sip_imported = False
36+
3437
# Now perform the imports.
3538
if QT_API in (QT_API_PYQT, QT_API_PYQTv2):
36-
import sip
39+
try:
40+
import sip
41+
_sip_imported = True
42+
except ImportError:
43+
# Try using PySide
44+
QT_API = QT_API_PYSIDE
45+
46+
if _sip_imported:
3747
if QT_API == QT_API_PYQTv2:
3848
if QT_API_ENV == 'pyqt':
3949
cond = ("Found 'QT_API=pyqt' environment variable. "
@@ -76,7 +86,7 @@
7686
# call to getapi() can fail in older versions of sip
7787
_getSaveFileName = QtGui.QFileDialog.getSaveFileName
7888

79-
else: # can only be pyside
89+
else: # try importing pyside
8090
from PySide import QtCore, QtGui, __version__, __version_info__
8191
if __version_info__ < (1, 0, 3):
8292
raise ImportError(

0 commit comments

Comments
 (0)