@@ -176,6 +176,7 @@ class FigureCanvasTkAgg(FigureCanvasAgg):
176
176
def __init__ (self , figure , master = None , resize_callback = None ):
177
177
FigureCanvasAgg .__init__ (self , figure )
178
178
self ._idle = True
179
+ self ._idle_callback = None
179
180
t1 ,t2 ,w ,h = self .figure .bbox .bounds
180
181
w , h = int (w ), int (h )
181
182
self ._tkcanvas = Tk .Canvas (
@@ -263,7 +264,8 @@ def idle_draw(*args):
263
264
self .draw ()
264
265
self ._idle = True
265
266
266
- if d : self ._tkcanvas .after_idle (idle_draw )
267
+ if d :
268
+ self ._idle_callback = self ._tkcanvas .after_idle (idle_draw )
267
269
268
270
def get_tk_widget (self ):
269
271
"""returns the Tk widget used to implement FigureCanvasTkAgg.
@@ -454,13 +456,15 @@ def destroy(*args):
454
456
455
457
456
458
def destroy (self , * args ):
457
- if Gcf .get_num_fig_managers ()== 0 and not matplotlib .is_interactive ():
458
- if self .window is not None :
459
- self .window .quit ()
460
459
if self .window is not None :
461
460
#self.toolbar.destroy()
461
+ if self .canvas ._idle_callback :
462
+ self .canvas ._tkcanvas .after_cancel (self .canvas ._idle_callback )
462
463
self .window .destroy ()
463
- self .window = None
464
+ if Gcf .get_num_fig_managers ()== 0 :
465
+ if self .window is not None :
466
+ self .window .quit ()
467
+ self .window = None
464
468
465
469
def set_window_title (self , title ):
466
470
self .window .wm_title (title )
0 commit comments