Skip to content

Commit 5c83d7b

Browse files
committed
FIX: callbacks do not raise after removal of widget axes
closes #25572
1 parent 5a9f7cb commit 5c83d7b

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

lib/matplotlib/widgets.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,9 @@ def __init__(self, ax):
117117
self.ax = ax
118118
self._cids = []
119119

120-
canvas = property(lambda self: self.ax.get_figure(root=True).canvas)
120+
canvas = property(
121+
lambda self: getattr(self.ax.get_figure(root=True), 'canvas', None)
122+
)
121123

122124
def connect_event(self, event, callback):
123125
"""
@@ -144,6 +146,10 @@ def _get_data_coords(self, event):
144146
return ((event.xdata, event.ydata) if event.inaxes is self.ax
145147
else self.ax.transData.inverted().transform((event.x, event.y)))
146148

149+
def ignore(self, event):
150+
# docstring inherited
151+
return super().ignore(event) or self.canvas is None
152+
147153

148154
class Button(AxesWidget):
149155
"""
@@ -2181,7 +2187,9 @@ def connect_default_events(self):
21812187

21822188
def ignore(self, event):
21832189
# docstring inherited
2184-
if not self.active or not self.ax.get_visible():
2190+
if super().ignore(event):
2191+
return True
2192+
if not self.ax.get_visible():
21852193
return True
21862194
# If canvas was locked
21872195
if not self.canvas.widgetlock.available(self):

0 commit comments

Comments
 (0)