mirror of
https://github.com/python/cpython.git
synced 2025-09-18 14:40:43 +00:00
Issue #20067: Tkinter variables now work when wantobjects is false.
This commit is contained in:
parent
e80e806b3a
commit
d97c01ff28
3 changed files with 14 additions and 9 deletions
|
@ -220,12 +220,12 @@ class Variable:
|
||||||
_varnum += 1
|
_varnum += 1
|
||||||
if value is not None:
|
if value is not None:
|
||||||
self.initialize(value)
|
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)
|
self.initialize(self._default)
|
||||||
def __del__(self):
|
def __del__(self):
|
||||||
"""Unset the variable in Tcl."""
|
"""Unset the variable in Tcl."""
|
||||||
if (self._tk is not None and self._tk.call("info", "exists",
|
if (self._tk is not None and
|
||||||
self._name)):
|
self._tk.getboolean(self._tk.call("info", "exists", self._name))):
|
||||||
self._tk.globalunsetvar(self._name)
|
self._tk.globalunsetvar(self._name)
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
"""Return the name of the variable in Tcl."""
|
"""Return the name of the variable in Tcl."""
|
||||||
|
|
|
@ -24,6 +24,9 @@ class TestBase(unittest.TestCase):
|
||||||
|
|
||||||
class TestVariable(TestBase):
|
class TestVariable(TestBase):
|
||||||
|
|
||||||
|
def info_exists(self, *args):
|
||||||
|
return self.root.getboolean(self.root.call("info", "exists", *args))
|
||||||
|
|
||||||
def test_default(self):
|
def test_default(self):
|
||||||
v = Variable(self.root)
|
v = Variable(self.root)
|
||||||
self.assertEqual("", v.get())
|
self.assertEqual("", v.get())
|
||||||
|
@ -35,21 +38,21 @@ class TestVariable(TestBase):
|
||||||
self.assertEqual("varname", str(v))
|
self.assertEqual("varname", str(v))
|
||||||
|
|
||||||
def test___del__(self):
|
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")
|
v = Variable(self.root, "sample string", "varname")
|
||||||
self.assertTrue(self.root.call("info", "exists", "varname"))
|
self.assertTrue(self.info_exists("varname"))
|
||||||
del v
|
del v
|
||||||
self.assertFalse(self.root.call("info", "exists", "varname"))
|
self.assertFalse(self.info_exists("varname"))
|
||||||
|
|
||||||
def test_dont_unset_not_existing(self):
|
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")
|
v1 = Variable(self.root, name="name")
|
||||||
v2 = Variable(self.root, name="name")
|
v2 = Variable(self.root, name="name")
|
||||||
del v1
|
del v1
|
||||||
self.assertFalse(self.root.call("info", "exists", "name"))
|
self.assertFalse(self.info_exists("name"))
|
||||||
# shouldn't raise exception
|
# shouldn't raise exception
|
||||||
del v2
|
del v2
|
||||||
self.assertFalse(self.root.call("info", "exists", "name"))
|
self.assertFalse(self.info_exists("name"))
|
||||||
|
|
||||||
def test___eq__(self):
|
def test___eq__(self):
|
||||||
# values doesn't matter, only class and name are checked
|
# values doesn't matter, only class and name are checked
|
||||||
|
|
|
@ -29,6 +29,8 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #20067: Tkinter variables now work when wantobjects is false.
|
||||||
|
|
||||||
- Issue #19020: Tkinter now uses splitlist() instead of split() in configure
|
- Issue #19020: Tkinter now uses splitlist() instead of split() in configure
|
||||||
methods.
|
methods.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue