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

Skip to content

Commit db2176f

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

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

lib/matplotlib/widgets.py

Lines changed: 7 additions & 3 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
"""
@@ -1085,7 +1087,7 @@ def __init__(self, ax, labels, actives=None, *, useblit=True,
10851087

10861088
def _clear(self, event):
10871089
"""Internal event handler to clear the buttons."""
1088-
if self.ignore(event) or self.canvas.is_saving():
1090+
if self.ignore(event) or self.canvas is None or self.canvas.is_saving():
10891091
return
10901092
self._background = self.canvas.copy_from_bbox(self.ax.bbox)
10911093
self.ax.draw_artist(self._checks)
@@ -1663,7 +1665,7 @@ def __init__(self, ax, labels, active=0, activecolor=None, *,
16631665

16641666
def _clear(self, event):
16651667
"""Internal event handler to clear the buttons."""
1666-
if self.ignore(event) or self.canvas.is_saving():
1668+
if self.ignore(event) or self.canvas is None or self.canvas.is_saving():
16671669
return
16681670
self._background = self.canvas.copy_from_bbox(self.ax.bbox)
16691671
self.ax.draw_artist(self._buttons)
@@ -2181,6 +2183,8 @@ def connect_default_events(self):
21812183

21822184
def ignore(self, event):
21832185
# docstring inherited
2186+
if self.canvas is None:
2187+
return True
21842188
if not self.active or not self.ax.get_visible():
21852189
return True
21862190
# If canvas was locked

0 commit comments

Comments
 (0)