diff --git a/Tools/idle/turtle.py b/Tools/idle/turtle.py
index 8d2be56..15b4138 100644
--- a/Tools/idle/turtle.py
+++ b/Tools/idle/turtle.py
@@ -210,12 +210,16 @@
                                                 arrow="last",
                                                 capstyle="round",
                                                 fill=self._color)
-                for i in range(1, 1+nhops):
-                    x, y = x0 + dx*i/nhops, y0 + dy*i/nhops
-                    self._canvas.coords(item, x0, y0, x, y)
-                    self._canvas.update()
-                    self._canvas.after(10)
-                self._canvas.itemconfigure(item, arrow="none")
+                try:
+                    for i in range(1, 1+nhops):
+                        x, y = x0 + dx*i/nhops, y0 + dy*i/nhops
+                        self._canvas.coords(item, x0, y0, x, y)
+                        self._canvas.update()
+                        self._canvas.after(10)
+                    self._canvas.itemconfigure(item, arrow="none")
+                except Tk.TclError:
+                    # Probably the window was closed!
+                    return
             else:
                 item = self._canvas.create_line(x0, y0, x1, y1,
                                                 width=self._width,
@@ -226,6 +230,7 @@
 
 _root = None
 _canvas = None
+_pen = None
 
 class Pen(RawPen):
 
@@ -233,13 +238,25 @@
         global _root, _canvas
         if _root is None:
             _root = Tk.Tk()
+            _root.wm_protocol("WM_DELETE_WINDOW", self.destroy)
         if _canvas is None:
             # XXX Should have scroll bars
             _canvas = Tk.Canvas(_root, background="white")
             _canvas.pack(expand=1, fill="both")
         RawPen.__init__(self, _canvas)
 
-_pen = None
+    def destroy(self):
+        global _root, _canvas, _pen
+        self.clear()
+        if self is _pen:
+            _pen = None
+            root = _root; _root = None
+            canvas = _canvas; _canvas = None
+            if root:
+                try:
+                    root.destroy()
+                except Tk.TclError:
+                    pass
 
 def _getpen():
     global _pen
