diff --git a/lib/matplotlib/backends/backend_qt.py b/lib/matplotlib/backends/backend_qt.py index 845e5bc2063c..b91446c4e632 100644 --- a/lib/matplotlib/backends/backend_qt.py +++ b/lib/matplotlib/backends/backend_qt.py @@ -211,6 +211,7 @@ def __init__(self, figure=None): self._draw_pending = False self._is_drawing = False self._draw_rect_callback = lambda painter: None + self._in_resize_event = False self.setAttribute( _enum("QtCore.Qt.WidgetAttribute").WA_OpaquePaintEvent) @@ -333,21 +334,23 @@ def keyReleaseEvent(self, event): guiEvent=event)._process() def resizeEvent(self, event): - frame = sys._getframe() - # Prevent PyQt6 recursion, but sometimes frame.f_back is None - if frame.f_code is getattr(frame.f_back, 'f_code', None): + if self._in_resize_event: # Prevent PyQt6 recursion return - w = event.size().width() * self.device_pixel_ratio - h = event.size().height() * self.device_pixel_ratio - dpival = self.figure.dpi - winch = w / dpival - hinch = h / dpival - self.figure.set_size_inches(winch, hinch, forward=False) - # pass back into Qt to let it finish - QtWidgets.QWidget.resizeEvent(self, event) - # emit our resize events - ResizeEvent("resize_event", self)._process() - self.draw_idle() + self._in_resize_event = True + try: + w = event.size().width() * self.device_pixel_ratio + h = event.size().height() * self.device_pixel_ratio + dpival = self.figure.dpi + winch = w / dpival + hinch = h / dpival + self.figure.set_size_inches(winch, hinch, forward=False) + # pass back into Qt to let it finish + QtWidgets.QWidget.resizeEvent(self, event) + # emit our resize events + ResizeEvent("resize_event", self)._process() + self.draw_idle() + finally: + self._in_resize_event = False def sizeHint(self): w, h = self.get_width_height()
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: