diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c
index 8fb321e..0383f1e 100644
--- a/Modules/_tkinter.c
+++ b/Modules/_tkinter.c
@@ -1426,48 +1426,6 @@
 	LEAVE_PYTHON
 }
 
-static int
-GetFileNo(PyObject *file)
-	/* Either an int >= 0 or an object with a
-	 *.fileno() method that returns an int >= 0
-	 */
-{
-	PyObject *meth, *args, *res;
-	int id;
-	if (PyInt_Check(file)) {
-		id = PyInt_AsLong(file);
-		if (id < 0)
-			PyErr_SetString(PyExc_ValueError, "invalid file id");
-		return id;
-	}
-	args = PyTuple_New(0);
-	if (args == NULL)
-		return -1;
-
-	meth = PyObject_GetAttrString(file, "fileno");
-	if (meth == NULL) {
-		Py_DECREF(args);
-		return -1;
-	}
-
-	res = PyEval_CallObject(meth, args);
-	Py_DECREF(args);
-	Py_DECREF(meth);
-	if (res == NULL)
-		return -1;
-
-	if (PyInt_Check(res))
-		id = PyInt_AsLong(res);
-	else
-		id = -1;
-
-	if (id < 0)
-		PyErr_SetString(PyExc_ValueError,
-				"invalid fileno() return value");
-	Py_DECREF(res);
-	return id;
-}
-
 static PyObject *
 Tkapp_CreateFileHandler(PyObject *self, PyObject *args)
      /* args is (file, mask, func) */
@@ -1478,7 +1436,7 @@
 
 	if (!PyArg_ParseTuple(args, "OiO:createfilehandler", &file, &mask, &func))
 		return NULL;
-	tfile = GetFileNo(file);
+	tfile = PyObject_AsFileDescriptor(file);
 	if (tfile < 0)
 		return NULL;
 	if (!PyCallable_Check(func)) {
@@ -1506,7 +1464,7 @@
   
 	if (!PyArg_ParseTuple(args, "O:deletefilehandler", &file))
 		return NULL;
-	tfile = GetFileNo(file);
+	tfile = PyObject_AsFileDescriptor(file);
 	if (tfile < 0)
 		return NULL;
 
diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c
index 23b7036..8f73d38 100644
--- a/Modules/selectmodule.c
+++ b/Modules/selectmodule.c
@@ -96,31 +96,9 @@
                     return -1;
 
 		Py_INCREF(o);
+		v = PyObject_AsFileDescriptor( o );
+		if (v == -1) goto finally;
 
-		if (PyInt_Check(o)) {
-			v = PyInt_AsLong(o);
-		}
-		else if ((meth = PyObject_GetAttrString(o, "fileno")) != NULL)
-		{
-			PyObject *fno = PyEval_CallObject(meth, NULL);
-			Py_DECREF(meth);
-			if (fno == NULL)
-				goto finally;
-
-                        if (!PyInt_Check(fno)) {
-				PyErr_SetString(PyExc_TypeError,
-                                       "fileno method returned a non-integer");
-				Py_DECREF(fno);
-				goto finally;
-                        }
-                        v = PyInt_AsLong(fno);
-			Py_DECREF(fno);
-		}
-		else {
-			PyErr_SetString(PyExc_TypeError,
-			"argument must be an int, or have a fileno() method.");
-			goto finally;
-		}
 #if defined(_MSC_VER)
 		max = 0;		     /* not used for Win32 */
 #else  /* !_MSC_VER */
