Perhaps a controversial change: when reporting a callback exception,
assign the exception info to sys.last_{type,value,traceback}.  That
way, an introspective Tkinter app can inspect its own stack trace.

(The controversy is that it would keep some objects alive, but that's
probably no big deal.)
diff --git a/Lib/lib-tk/Tkinter.py b/Lib/lib-tk/Tkinter.py
index 4662f3b..0f4c713 100644
--- a/Lib/lib-tk/Tkinter.py
+++ b/Lib/lib-tk/Tkinter.py
@@ -935,6 +935,9 @@
 	def report_callback_exception(self, exc, val, tb):
 		import traceback, sys
 		sys.stderr.write("Exception in Tkinter callback\n")
+		sys.last_type = exc
+		sys.last_value = val
+		sys.last_traceback = tb
 		traceback.print_exception(exc, val, tb)
 
 # Ideally, the classes Pack, Place and Grid disappear, the