Mods by Tony Lownds (patch 490100, slightly massaged by me) to make Tkinter
work with Mac OS X Aqua-Tk, all nicely within ifdefs.

The process is not for the faint of heart, though: you need to download
and install the (alfa) Aqua-Tk, obtain a few needed X11 headers from
somewhere else and then everything builds. To run scripts using Tkinter
you must build with --enable-framework, build Python.app in Mac/OSX
and run your Tkinter scripts with that. Then, about half the tests in
Demo/tkinter work (or at least do something).

Checking this in anyway because it shouldn't break anything, and newer
versions of Aqua-Tk will streamline the process.
diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c
index 4e701ad..44f6420 100644
--- a/Modules/_tkinter.c
+++ b/Modules/_tkinter.c
@@ -41,8 +41,13 @@
 #define MAC_TCL
 #endif
 
+#ifdef TK_FRAMEWORK
+#include <Tcl/tcl.h>
+#include <Tk/tk.h>
+#else
 #include <tcl.h>
 #include <tk.h>
+#endif
 
 #define TKMAJORMINOR (TK_MAJOR_VERSION*1000 + TK_MINOR_VERSION)
 
@@ -454,6 +459,7 @@
 	ClearMenuBar();
 	TkMacInitMenus(v->interp);
 #endif
+
 	/* Delete the 'exit' command, which can screw things up */
 	Tcl_DeleteCommand(v->interp, "exit");
 
@@ -1580,7 +1586,7 @@
 	char buf[100];
 
 	PyOS_snprintf(buf, sizeof(buf), "<tktimertoken at %p%s>", v,
-		      v->func == NULL ? ", handler deleted" : "");
+	                v->func == NULL ? ", handler deleted" : "");
 	return PyString_FromString(buf);
 }
 
@@ -2137,6 +2143,22 @@
 	Tktt_Type.ob_type = &PyType_Type;
 	PyDict_SetItemString(d, "TkttType", (PyObject *)&Tktt_Type);
 
+
+#ifdef TK_AQUA
+	/* Tk_MacOSXSetupTkNotifier must be called before Tcl's subsystems
+	 * start waking up.  Note that Tcl_FindExecutable will do this, this
+	 * code must be above it! The original warning from
+	 * tkMacOSXAppInit.c is copied below.
+	 *
+	 * NB - You have to swap in the Tk Notifier BEFORE you start up the
+	 * Tcl interpreter for now.  It probably should work to do this
+	 * in the other order, but for now it doesn't seem to.
+	 *
+	 */
+	Tk_MacOSXSetupTkNotifier();
+#endif
+
+
 	/* This helps the dynamic loader; in Unicode aware Tcl versions
 	   it also helps Tcl find its encodings. */
 	Tcl_FindExecutable(Py_GetProgramName());