@@ -176,6 +176,7 @@ class FigureCanvasTkAgg(FigureCanvasAgg):
176176 def __init__ (self , figure , master = None , resize_callback = None ):
177177 FigureCanvasAgg .__init__ (self , figure )
178178 self ._idle = True
179+ self ._idle_callback = None
179180 t1 ,t2 ,w ,h = self .figure .bbox .bounds
180181 w , h = int (w ), int (h )
181182 self ._tkcanvas = Tk .Canvas (
@@ -263,7 +264,8 @@ def idle_draw(*args):
263264 self .draw ()
264265 self ._idle = True
265266
266- if d : self ._tkcanvas .after_idle (idle_draw )
267+ if d :
268+ self ._idle_callback = self ._tkcanvas .after_idle (idle_draw )
267269
268270 def get_tk_widget (self ):
269271 """returns the Tk widget used to implement FigureCanvasTkAgg.
@@ -454,13 +456,15 @@ def destroy(*args):
454456
455457
456458 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 ()
460459 if self .window is not None :
461460 #self.toolbar.destroy()
461+ if self .canvas ._idle_callback :
462+ self .canvas ._tkcanvas .after_cancel (self .canvas ._idle_callback )
462463 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
464468
465469 def set_window_title (self , title ):
466470 self .window .wm_title (title )
0 commit comments