]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Issue #20067: Tkinter variables now work when wantobjects is false.
authorSerhiy Storchaka <storchaka@gmail.com>
Thu, 26 Dec 2013 18:06:05 +0000 (20:06 +0200)
committerSerhiy Storchaka <storchaka@gmail.com>
Thu, 26 Dec 2013 18:06:05 +0000 (20:06 +0200)
Lib/tkinter/__init__.py
Lib/tkinter/test/test_tkinter/test_variables.py
Misc/NEWS

index 23aec021e2e98e0cf019aa787637c7f53c8cb362..95b25816fbda2f1674e8e91b3a99c8d25ae76bea 100644 (file)
@@ -220,12 +220,12 @@ class Variable:
             _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."""
index 378cc92ebf0f4d042ae26329b4b3a0e4b39a472f..fa1f89842f93575d0942cb543722fea9b4242faf 100644 (file)
@@ -24,6 +24,9 @@ class TestBase(unittest.TestCase):
 
 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 @@ class TestVariable(TestBase):
         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
index 547f108241fb09eb5455ee6e33f7bc5acbcfe3ef..c6f58334ba09a375fa6531681e55c64ae4fc4229 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -29,6 +29,8 @@ Core and Builtins
 Library
 -------
 
+- Issue #20067: Tkinter variables now work when wantobjects is false.
+
 - Issue #19020: Tkinter now uses splitlist() instead of split() in configure
   methods.