diff -r 4e2b69138ab9 Lib/tkinter/__init__.py --- a/Lib/tkinter/__init__.py Wed Dec 25 17:36:20 2013 +0200 +++ b/Lib/tkinter/__init__.py Wed Dec 25 18:12:57 2013 +0200 @@ -220,12 +220,12 @@ _varnum += 1 if value is not None: self.initialize(value) - elif not self._tk.call("info", "exists", self._name): + elif not self._tk.getboolean(self._tk.call("info", "exists", self._name)): self.initialize(self._default) def __del__(self): """Unset the variable in Tcl.""" - if (self._tk is not None and self._tk.call("info", "exists", - self._name)): + if (self._tk is not None and + self._tk.getboolean(self._tk.call("info", "exists", self._name))): self._tk.globalunsetvar(self._name) def __str__(self): """Return the name of the variable in Tcl.""" diff -r 4e2b69138ab9 Lib/tkinter/test/test_tkinter/test_variables.py --- a/Lib/tkinter/test/test_tkinter/test_variables.py Wed Dec 25 17:36:20 2013 +0200 +++ b/Lib/tkinter/test/test_tkinter/test_variables.py Wed Dec 25 18:12:57 2013 +0200 @@ -24,6 +24,9 @@ class TestVariable(TestBase): + def info_exists(self, *args): + return self.root.getboolean(self.root.call("info", "exists", *args)) + def test_default(self): v = Variable(self.root) self.assertEqual("", v.get()) @@ -35,21 +38,21 @@ self.assertEqual("varname", str(v)) def test___del__(self): - self.assertFalse(self.root.call("info", "exists", "varname")) + self.assertFalse(self.info_exists("varname")) v = Variable(self.root, "sample string", "varname") - self.assertTrue(self.root.call("info", "exists", "varname")) + self.assertTrue(self.info_exists("varname")) del v - self.assertFalse(self.root.call("info", "exists", "varname")) + self.assertFalse(self.info_exists("varname")) def test_dont_unset_not_existing(self): - self.assertFalse(self.root.call("info", "exists", "varname")) + self.assertFalse(self.info_exists("varname")) v1 = Variable(self.root, name="name") v2 = Variable(self.root, name="name") del v1 - self.assertFalse(self.root.call("info", "exists", "name")) + self.assertFalse(self.info_exists("name")) # shouldn't raise exception del v2 - self.assertFalse(self.root.call("info", "exists", "name")) + self.assertFalse(self.info_exists("name")) def test___eq__(self): # values doesn't matter, only class and name are checked