diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c
index 1de3372..556b0ac 100644
--- a/Modules/_tkinter.c
+++ b/Modules/_tkinter.c
@@ -56,21 +56,23 @@
 #include <tcl.h>
 #include <tk.h>
 
+#if TK_MAJOR_VERSION < 4
+#error "Tk 3.x is not supported"
+#endif
+
+#define TKMAJORMINOR (TK_MAJOR_VERSION*1000 + TK_MINOR_VERSION)
+
 extern char *Py_GetProgramName ();
 
-/* Internal declarations from tkInt.h.  */
-#if (TK_MAJOR_VERSION*1000 + TK_MINOR_VERSION) >= 4001
+#if TKMAJORMINOR >= 4001
 extern int Tk_GetNumMainWindows();
 #else
+/* Internal declarations from tkInt.h.  */
 extern int tk_NumMainWindows;
 #define Tk_GetNumMainWindows() (tk_NumMainWindows)
 #define NEED_TKCREATEMAINWINDOW 1
 #endif
 
-#if TK_MAJOR_VERSION < 4
-#error "Tk 3.x is not supported"
-#endif
-
 #ifdef macintosh
 
 /*
@@ -1018,9 +1020,11 @@
 	PyObject *file, *func, *data;
 	PyObject *idkey;
 	int mask, id;
-#if (TK_MAJOR_VERSION*1000 + TK_MINOR_VERSION) >= 4001
+#if TKMAJORMINOR < 8000
+#if TKMAJORMINOR >= 4001
 	Tcl_File tfile;
 #endif
+#endif
 
 	if (!Tkapp_ClientDataDict) {
 		if (!(Tkapp_ClientDataDict = PyDict_New()))
@@ -1049,18 +1053,22 @@
 	}
 	Py_DECREF(idkey);
 
-#if (TK_MAJOR_VERSION*1000 + TK_MINOR_VERSION) >= 4001
+#if TKMAJORMINOR < 8000
+#if TKMAJORMINOR >= 4001
 #ifdef MS_WINDOWS
 	/* We assume this is a socket... */
 	tfile = Tcl_GetFile((ClientData)id, TCL_WIN_SOCKET);
-#else
+#else /* !MS_WINDOWS */
 	tfile = Tcl_GetFile((ClientData)id, TCL_UNIX_FD);
-#endif
+#endif /* !MS_WINDOWS */
 	/* Ought to check for null Tcl_File object... */
 	Tcl_CreateFileHandler(tfile, mask, FileHandler, (ClientData) data);
-#else
+#else /* ! >= 4001 */
 	Tk_CreateFileHandler(id, mask, FileHandler, (ClientData) data);
-#endif
+#endif /* ! >= 4001 */
+#else /* ! < 8000 */
+	Tcl_CreateFileHandler(id, mask, FileHandler, (ClientData) data);
+#endif  /* < 8000 */
 	/* XXX fileHandlerDict */
 	Py_INCREF (Py_None);
 	return Py_None;
@@ -1076,9 +1084,11 @@
 	PyObject *idkey;
 	PyObject *data;
 	int id;
-#if (TK_MAJOR_VERSION*1000 + TK_MINOR_VERSION) >= 4001
+#if TKMAJORMINOR < 8000
+#if TKMAJORMINOR >= 4001
 	Tcl_File tfile;
 #endif
+#endif
   
 	if (!PyArg_Parse(args, "O", &file))
 		return NULL;
@@ -1097,7 +1107,8 @@
 	PyDict_DelItem(Tkapp_ClientDataDict, idkey);
 	Py_DECREF(idkey);
 
-#if (TK_MAJOR_VERSION*1000 + TK_MINOR_VERSION) >= 4001
+#if TKMAJORMINOR < 8000
+#if TKMAJORMINOR >= 4001
 #ifdef MS_WINDOWS
 	/* We assume this is a socket... */
 	tfile = Tcl_GetFile((ClientData)id, TCL_WIN_SOCKET);
@@ -1109,6 +1120,9 @@
 #else
 	Tk_DeleteFileHandler(id);
 #endif
+#else	
+	Tcl_DeleteFileHandler(id);
+#endif
 	/* XXX fileHandlerDict */
 	Py_INCREF (Py_None);
 	return Py_None;
