diff --git a/Lib/lib-tk/Tkinter.py b/Lib/lib-tk/Tkinter.py
index 11dae120d4d250567411e44810ec037f415c63c7..b5b0af3a9fbf43157eb4a18ab1c8b85070f91001 100644
--- a/Lib/lib-tk/Tkinter.py
+++ b/Lib/lib-tk/Tkinter.py
@@ -475,8 +475,10 @@ class Misc:
         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))
+            data = self.tk.call('after', 'info', id)
+            # In Tk 8.3, splitlist returns: (script, type)
+            # In Tk 8.4, splitlist may return (script, type) or (script,)
+            script = self.tk.splitlist(data)[0]
             self.deletecommand(script)
         except TclError:
             pass
diff --git a/Misc/NEWS b/Misc/NEWS
index 84da7572df3f423a415993b53171dcb555b317fb..479f2e2f7ed4ae20f434683dd679ccf0a953d3c0 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -30,6 +30,9 @@ Library
 - SF bug 763023: fix uncaught ZeroDivisionError in difflib ratio methods
   when there are no lines.
 
+- SF bug 763637: fix exception in Tkinter with after_cancel
+  which could occur with Tk 8.4
+
 Tools/Demos
 -----------