]> granicus.if.org Git - python/commitdiff
Convert booleans to integers in IntVar.set. Fixes #671741.
authorMartin v. Löwis <martin@v.loewis.de>
Wed, 22 Jan 2003 09:17:38 +0000 (09:17 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Wed, 22 Jan 2003 09:17:38 +0000 (09:17 +0000)
Return booleans from _tkinter.getboolean.
Convert booleans to Tcl booleans in AsObj.

Lib/lib-tk/Tkinter.py
Modules/_tkinter.c

index de41bdcad5d4b8474221cd190c22c72924b762fc..bd80c3b6050f8a3bb8496eb9daedafa3d3cfe0a5 100644 (file)
@@ -234,6 +234,12 @@ class IntVar(Variable):
         MASTER can be given as master widget."""
         Variable.__init__(self, master)
 
+    def set(self, value):
+        """Set the variable to value, converting booleans to integers."""
+        if isinstance(value, bool):
+            value = int(value)
+        return Variable.set(self, value)
+
     def get(self):
         """Return the value of the variable as an integer."""
         return getint(self._tk.globalgetvar(self._name))
index 8b9926e0be48835adf95e0c6700e53f0daf07bac..b9dc179eee3be14761dbf5a107ef7d8d67dab572 100644 (file)
@@ -868,6 +868,8 @@ AsObj(PyObject *value)
        if (PyString_Check(value))
                return Tcl_NewStringObj(PyString_AS_STRING(value),
                                        PyString_GET_SIZE(value));
+       else if (PyBool_Check(value))
+               return Tcl_NewBooleanObj(PyObject_IsTrue(value));
        else if (PyInt_Check(value))
                return Tcl_NewLongObj(PyInt_AS_LONG(value));
        else if (PyFloat_Check(value))
@@ -1739,7 +1741,7 @@ Tkapp_GetBoolean(PyObject *self, PyObject *args)
                return NULL;
        if (Tcl_GetBoolean(Tkapp_Interp(self), s, &v) == TCL_ERROR)
                return Tkinter_Error(self);
-       return Py_BuildValue("i", v);
+       return PyBool_FromLong(v);
 }
 
 static PyObject *