Patch #749191: Delete commands in after_cancel. Will backport to 2.2.
diff --git a/Lib/lib-tk/Tkinter.py b/Lib/lib-tk/Tkinter.py
index 2025ba8..11dae12 100644
--- a/Lib/lib-tk/Tkinter.py
+++ b/Lib/lib-tk/Tkinter.py
@@ -474,6 +474,12 @@
 
         Identifier returned by after or after_idle must be
         given as first parameter."""
+        try:
+            (script, type) = self.tk.splitlist(
+                self.tk.call('after', 'info', id))
+            self.deletecommand(script)
+        except TclError:
+            pass
         self.tk.call('after', 'cancel', id)
     def bell(self, displayof=0):
         """Ring a display's bell."""