diff --git a/lib/matplotlib/backends/backend_qt.py b/lib/matplotlib/backends/backend_qt.py index 2aa7874fbdb7..cbc490ef6cd1 100644 --- a/lib/matplotlib/backends/backend_qt.py +++ b/lib/matplotlib/backends/backend_qt.py @@ -261,6 +261,8 @@ def enterEvent(self, event): # Force querying of the modifiers, as the cached modifier state can # have been invalidated while the window was out of focus. mods = QtWidgets.QApplication.instance().queryKeyboardModifiers() + if self.figure is None: + return LocationEvent("figure_enter_event", self, *self.mouseEventCoords(event), modifiers=self._mpl_modifiers(mods), @@ -268,6 +270,8 @@ def enterEvent(self, event): def leaveEvent(self, event): QtWidgets.QApplication.restoreOverrideCursor() + if self.figure is None: + return LocationEvent("figure_leave_event", self, *self.mouseEventCoords(), modifiers=self._mpl_modifiers(), @@ -275,7 +279,7 @@ def leaveEvent(self, event): def mousePressEvent(self, event): button = self.buttond.get(event.button()) - if button is not None: + if button is not None and self.figure is not None: MouseEvent("button_press_event", self, *self.mouseEventCoords(event), button, modifiers=self._mpl_modifiers(), @@ -283,13 +287,15 @@ def mousePressEvent(self, event): def mouseDoubleClickEvent(self, event): button = self.buttond.get(event.button()) - if button is not None: + if button is not None and self.figure is not None: MouseEvent("button_press_event", self, *self.mouseEventCoords(event), button, dblclick=True, modifiers=self._mpl_modifiers(), guiEvent=event)._process() def mouseMoveEvent(self, event): + if self.figure is None: + return MouseEvent("motion_notify_event", self, *self.mouseEventCoords(event), modifiers=self._mpl_modifiers(), @@ -297,7 +303,7 @@ def mouseMoveEvent(self, event): def mouseReleaseEvent(self, event): button = self.buttond.get(event.button()) - if button is not None: + if button is not None and self.figure is not None: MouseEvent("button_release_event", self, *self.mouseEventCoords(event), button, modifiers=self._mpl_modifiers(), @@ -311,7 +317,7 @@ def wheelEvent(self, event): steps = event.angleDelta().y() / 120 else: steps = event.pixelDelta().y() - if steps: + if steps and self.figure is not None: MouseEvent("scroll_event", self, *self.mouseEventCoords(event), step=steps, modifiers=self._mpl_modifiers(), @@ -319,14 +325,14 @@ def wheelEvent(self, event): def keyPressEvent(self, event): key = self._get_key(event) - if key is not None: + if key is not None and self.figure is not None: KeyEvent("key_press_event", self, key, *self.mouseEventCoords(), guiEvent=event)._process() def keyReleaseEvent(self, event): key = self._get_key(event) - if key is not None: + if key is not None and self.figure is not None: KeyEvent("key_release_event", self, key, *self.mouseEventCoords(), guiEvent=event)._process() @@ -334,6 +340,8 @@ def keyReleaseEvent(self, event): def resizeEvent(self, event): if self._in_resize_event: # Prevent PyQt6 recursion return + if self.figure is None: + return self._in_resize_event = True try: w = event.size().width() * self.device_pixel_ratio