Add a close() method and bind to WM_DELETE_WINDOW protocol
diff --git a/Tools/idle/StackViewer.py b/Tools/idle/StackViewer.py
index dbfc4b0..52169a5 100644
--- a/Tools/idle/StackViewer.py
+++ b/Tools/idle/StackViewer.py
@@ -18,6 +18,7 @@
             root = top = Tk()
         else:
             top = Toplevel(root)
+        self.top.protocol("WM_DELETE_WINDOW", self.close)
         self.root = root
         self.top = top
         top.wm_title("Stack viewer")
@@ -51,6 +52,9 @@
         stack = getstack()
         self.load_stack(stack)
         self.statuslabel.config(text=getexception())
+    
+    def close(self):
+        self.top.destroy()
 
     def load_stack(self, stack):
         self.stack = stack