Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 515b57c

Browse filesBrowse files
author
Martin Fitzpatrick
committed
Fix handling of getSaveFileName to be consistent
PyQt4 and PyQt5 handle getSaveFileName differently, returning either a filename or a filename,filter tuple respectively. PySide behaves as for PyQt5. This caused bug #3454 producing an 'format not supported' error as the tuple did not match any of the string types. This updates each API to return a tuple as per PyQt5 (following the principle of using the latest API as a target). For recent PyQt4 this means using getSaveFileNameAndFilter instead, for older PyQt4 we wrap the function to output a tuple. Figure saving has been tested on PySide, PyQt4 and PyQt5.
1 parent 561462f commit 515b57c
Copy full SHA for 515b57c

File tree

Expand file treeCollapse file tree

2 files changed

+9
-13
lines changed
Filter options
Expand file treeCollapse file tree

2 files changed

+9
-13
lines changed

‎lib/matplotlib/backends/backend_qt5.py

Copy file name to clipboardExpand all lines: lib/matplotlib/backends/backend_qt5.py
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -715,7 +715,7 @@ def save_figure(self, *args):
715715
filters.append(filter)
716716
filters = ';;'.join(filters)
717717

718-
fname = _getSaveFileName(self.parent, "Choose a filename to save to",
718+
fname, filter = _getSaveFileName(self.parent, "Choose a filename to save to",
719719
start, filters, selectedFilter)
720720
if fname:
721721
if startpath == '':

‎lib/matplotlib/backends/qt_compat.py

Copy file name to clipboardExpand all lines: lib/matplotlib/backends/qt_compat.py
+8-12Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -78,21 +78,19 @@
7878
try:
7979
if sip.getapi("QString") > 1:
8080
# Use new getSaveFileNameAndFilter()
81-
_get_save = QtGui.QFileDialog.getSaveFileNameAndFilter
81+
_getSaveFileName = QtGui.QFileDialog.getSaveFileNameAndFilter
8282
else:
8383
# Use old getSaveFileName()
84-
_getSaveFileName = QtGui.QFileDialog.getSaveFileName
84+
def _getSaveFileName(*args, **kwargs):
85+
return QtGui.QFileDialog.getSaveFileName(*args, **kwargs), None
86+
8587
except (AttributeError, KeyError):
8688
# call to getapi() can fail in older versions of sip
87-
_getSaveFileName = QtGui.QFileDialog.getSaveFileName
89+
def _getSaveFileName(*args, **kwargs):
90+
return QtGui.QFileDialog.getSaveFileName(*args, **kwargs), None
8891

8992
else: # PyQt5 API
90-
9193
from PyQt5 import QtCore, QtGui, QtWidgets
92-
93-
# Additional PyQt5 shimming to make it appear as for PyQt4
94-
95-
_get_save = QtWidgets.QFileDialog.getSaveFileName
9694
_getSaveFileName = QtWidgets.QFileDialog.getSaveFileName
9795

9896
# Alias PyQt-specific functions for PySide compatibility.
@@ -112,11 +110,8 @@
112110
raise ImportError(
113111
"Matplotlib backend_qt4 and backend_qt4agg require PySide >=1.0.3")
114112

115-
_get_save = QtGui.QFileDialog.getSaveFileName
113+
_getSaveFileName = QtGui.QFileDialog.getSaveFileName
116114

117-
if _getSaveFileName is None:
118-
def _getSaveFileName(self, msg, start, filters, selectedFilter):
119-
return _get_save(self, msg, start, filters, selectedFilter)[0]
120115

121116
# Apply shim to Qt4 APIs to make them look like Qt5
122117
if QT_API in (QT_API_PYQT, QT_API_PYQTv2, QT_API_PYSIDE):
@@ -128,3 +123,4 @@ def _getSaveFileName(self, msg, start, filters, selectedFilter):
128123
129124
'''
130125
QtWidgets = QtGui
126+

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.