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

Skip to content

Commit 805d20c

Browse files
authored
Merge pull request #9002 from tacaswell/fix_qt5_dpi_no_manager
FIX: Qt5 account for dpiratio as early as possible
2 parents 3045391 + ce7c8df commit 805d20c

File tree

3 files changed

+12
-15
lines changed

3 files changed

+12
-15
lines changed

lib/matplotlib/backends/backend_qt5.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,8 +182,13 @@ class FigureCanvasQT(QtWidgets.QWidget, FigureCanvasBase):
182182
# QtCore.Qt.XButton2: None,
183183
}
184184

185+
def _update_figure_dpi(self):
186+
dpi = self._dpi_ratio * self.figure._original_dpi
187+
self.figure._set_dpi(dpi, forward=False)
188+
185189
def __init__(self, figure):
186190
_create_qApp()
191+
figure._original_dpi = figure.dpi
187192

188193
# NB: Using super for this call to avoid a TypeError:
189194
# __init__() takes exactly 2 arguments (1 given) on QWidget
@@ -192,6 +197,8 @@ def __init__(self, figure):
192197
# http://pyqt.sourceforge.net/Docs/PyQt5/pyqt4_differences.html#cooperative-multi-inheritance
193198
super(FigureCanvasQT, self).__init__(figure=figure)
194199
self.figure = figure
200+
self._update_figure_dpi()
201+
195202
self.setMouseTracking(True)
196203
w, h = self.get_width_height()
197204
self.resize(w, h)

lib/matplotlib/backends/backend_qt5agg.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -190,17 +190,6 @@ class FigureCanvasQTAgg(FigureCanvasQTAggBase, FigureCanvasQT):
190190
191191
"""
192192

193-
def __init__(self, figure):
194-
super(FigureCanvasQTAgg, self).__init__(figure=figure)
195-
# We don't want to scale up the figure DPI more than once.
196-
# Note, we don't handle a signal for changing DPI yet.
197-
self.figure._original_dpi = self.figure.dpi
198-
self._update_figure_dpi()
199-
200-
def _update_figure_dpi(self):
201-
dpi = self._dpi_ratio * self.figure._original_dpi
202-
self.figure._set_dpi(dpi, forward=False)
203-
204193

205194
@_BackendQT5.export
206195
class _BackendQT5Agg(_BackendQT5):

lib/matplotlib/tests/test_backend_qt5.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ def test_dpi_ratio_change():
125125
size = qt_canvas.size()
126126

127127
qt_canvas.manager.show()
128+
qt_canvas.draw()
128129
qApp.processEvents()
129130

130131
# The DPI and the renderer width/height change
@@ -133,8 +134,8 @@ def test_dpi_ratio_change():
133134
assert qt_canvas.renderer.height == 720
134135

135136
# The actual widget size and figure physical size don't change
136-
assert size.width() == 200
137-
assert size.height() == 80
137+
assert size.width() == 600
138+
assert size.height() == 240
138139
assert_equal(qt_canvas.get_width_height(), (600, 240))
139140
assert_equal(fig.get_size_inches(), (5, 2))
140141

@@ -151,7 +152,7 @@ def test_dpi_ratio_change():
151152
assert qt_canvas.renderer.height == 480
152153

153154
# The actual widget size and figure physical size don't change
154-
assert size.width() == 200
155-
assert size.height() == 80
155+
assert size.width() == 600
156+
assert size.height() == 240
156157
assert_equal(qt_canvas.get_width_height(), (600, 240))
157158
assert_equal(fig.get_size_inches(), (5, 2))

0 commit comments

Comments
 (0)