diff --git a/Doc/whatsnew/whatsnew23.tex b/Doc/whatsnew/whatsnew23.tex
index c3b8e8f..444ac16 100644
--- a/Doc/whatsnew/whatsnew23.tex
+++ b/Doc/whatsnew/whatsnew23.tex
@@ -1300,7 +1300,7 @@
 
 \begin{verbatim}
 import Tkinter
-Tkinter.want_objects = 0
+Tkinter.wantobjects = 0
 \end{verbatim}
 
 before creating the first \class{tkapp} object.
diff --git a/Lib/lib-tk/Tkinter.py b/Lib/lib-tk/Tkinter.py
index f222007..833aad5 100644
--- a/Lib/lib-tk/Tkinter.py
+++ b/Lib/lib-tk/Tkinter.py
@@ -45,7 +45,7 @@
 except ImportError:
     _MacOS = None
 
-want_objects = 1
+wantobjects = 1
 
 TkVersion = float(_tkinter.TK_VERSION)
 TclVersion = float(_tkinter.TCL_VERSION)
@@ -1523,7 +1523,7 @@
             if ext not in ('.py', '.pyc', '.pyo'):
                 baseName = baseName + ext
         self.tk = _tkinter.create(screenName, baseName, className)
-        self.tk.wantobjects(want_objects)
+        self.tk.wantobjects(wantobjects)
         if _MacOS and hasattr(_MacOS, 'SchedParams'):
             # Disable event scanning except for Command-Period
             _MacOS.SchedParams(1, 0)
diff --git a/Misc/NEWS b/Misc/NEWS
index a5190c7..248382c 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -317,7 +317,7 @@
 - _tkinter now returns Tcl objects, instead of strings. Objects which
   have Python equivalents are converted to Python objects, other objects
   are wrapped. This can be configured through the wantobjects method,
-  or Tkinter.want_objects.
+  or Tkinter.wantobjects.
 
 - The PyBSDDB wrapper around the Sleepycat Berkeley DB library has been
   added as the package bsddb. The traditional bsddb module is still
diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c
index b74641e..5b83c51 100644
--- a/Modules/_tkinter.c
+++ b/Modules/_tkinter.c
@@ -221,7 +221,7 @@
 typedef struct {
 	PyObject_HEAD
 	Tcl_Interp *interp;
-	int want_objects;
+	int wantobjects;
 } TkappObject;
 
 #define Tkapp_Check(v) ((v)->ob_type == &Tkapp_Type)
@@ -523,7 +523,7 @@
 
 static TkappObject *
 Tkapp_New(char *screenName, char *baseName, char *className, 
-	  int interactive, int want_objects)
+	  int interactive, int wantobjects)
 {
 	TkappObject *v;
 	char *argv0;
@@ -533,7 +533,7 @@
 		return NULL;
 
 	v->interp = Tcl_CreateInterp();
-	v->want_objects = want_objects;
+	v->wantobjects = wantobjects;
 
 #if defined(macintosh)
 	/* This seems to be needed */
@@ -901,7 +901,7 @@
 	ENTER_OVERLAP
 	if (i == TCL_ERROR)
 		Tkinter_Error(self);
-	else if(((TkappObject*)self)->want_objects) {
+	else if(((TkappObject*)self)->wantobjects) {
 		Tcl_Obj *value = Tcl_GetObjResult(interp);
 		/* Not sure whether the IncrRef is necessary, but something
 		   may overwrite the interpreter result while we are
@@ -1967,10 +1967,10 @@
 Tkapp_WantObjects(PyObject *self, PyObject *args)
 {
 
-	int want_objects;
-	if (!PyArg_ParseTuple(args, "i:wantobjects", &want_objects))
+	int wantobjects;
+	if (!PyArg_ParseTuple(args, "i:wantobjects", &wantobjects))
 		return NULL;
-	((TkappObject*)self)->want_objects = want_objects;
+	((TkappObject*)self)->wantobjects = wantobjects;
 
 	Py_INCREF(Py_None);
 	return Py_None;
@@ -2179,7 +2179,7 @@
 	char *baseName = NULL;
 	char *className = NULL;
 	int interactive = 0;
-	int want_objects = 0;
+	int wantobjects = 0;
 
 	baseName = strrchr(Py_GetProgramName(), '/');
 	if (baseName != NULL)
@@ -2190,11 +2190,11 @@
   
 	if (!PyArg_ParseTuple(args, "|zssi:create",
 			      &screenName, &baseName, &className,
-			      &interactive, &want_objects))
+			      &interactive, &wantobjects))
 		return NULL;
 
 	return (PyObject *) Tkapp_New(screenName, baseName, className, 
-				      interactive, want_objects);
+				      interactive, wantobjects);
 }
 
 static PyMethodDef moduleMethods[] =
