It is 100% upwards compatible from 8.3 and provides numerous enhancements for Tk users (like compound buttons, new core widgets, enhanced performance, etc).
Unfortunately, it is not. Tk decided to set some "indeterminate" fields in event structures to '??', whereas earlier they have been numbers. This has caused an incompatibility in Tkinter of Python 2.2.2 and earlier, which now crashes when trying to convert these to integers. This has been fixed in Python 2.2.3 and 2.3, by not trying to convert these fields, so that now Pmw crashes when interpreting these fields as integers (where "crashes" means "raising Python exceptions").
Ah yes, a few instances like that can be considered incompatible, but it was really a correction for buggy behavior that existed in Tk. You could make requests for event fields that were valid (depending on the event type). You either got lucky and got some random data, or you could segfault. This relates to these bugs:
Other items that are in this vein are different default sizes for buttons on Windows (better native size), and more standard behavior of transient toplevels across platforms (with docs). You also get stuff like the real XP scrollbar and auto-disabling of scrollbars on Windows (native style). Then there is of course the entirely new native OS X Aqua support, but I'm not sure if Tkinter is ported for OS X yet (??).
Jeff Hobbs The Tcl Guy Senior Developer http://www.ActiveState.com/