diff --git a/lib/matplotlib/backend_bases.py b/lib/matplotlib/backend_bases.py index 8c11c73afb8c..dbf6dcee5677 100644 --- a/lib/matplotlib/backend_bases.py +++ b/lib/matplotlib/backend_bases.py @@ -3367,10 +3367,14 @@ def configure_subplots(self, *args): tool_fig = manager.canvas.figure tool_fig.subplots_adjust(top=0.9) self.subplot_tool = widgets.SubplotTool(self.canvas.figure, tool_fig) - tool_fig.canvas.mpl_connect( - "close_event", lambda e: delattr(self, "subplot_tool")) - self.canvas.mpl_connect( + cid = self.canvas.mpl_connect( "close_event", lambda e: manager.destroy()) + + def on_tool_fig_close(e): + self.canvas.mpl_disconnect(cid) + del self.subplot_tool + + tool_fig.canvas.mpl_connect("close_event", on_tool_fig_close) manager.show() return self.subplot_tool