gh-152587: Make name and value required in tkinter variable methods (… · python/cpython@9751e1d

GitHub

Original file line numberDiff line numberDiff line change@@ -559,6 +559,14 @@ Porting to Python 3.16

559559This section lists previously described changes and other bugfixes

560560that may require changes to your code.

561561562+* In :mod:`tkinter`, the *name* parameter of the

563+:meth:`~tkinter.Misc.wait_variable`, :meth:`~tkinter.Misc.setvar` and

564+:meth:`~tkinter.Misc.getvar` methods and the *value* parameter of

565+:meth:`!setvar` are now required. Calling these methods without

566+ them, which formerly defaulted to ``'PY_VAR'`` and ``'1'``, now raises

567+:exc:`TypeError`.

568+ (Contributed by Serhiy Storchaka in :gh:`152587`.)

569+562570563571Build changes

564572=============

Original file line numberDiff line numberDiff line change@@ -367,6 +367,10 @@ def test_getdouble(self):

367367deftest_getvar(self):

368368self.root.setvar('test_var', 'hello')

369369self.assertEqual(self.root.getvar('test_var'), 'hello')

370+# The name and value are required (gh-152587).

371+self.assertRaises(TypeError, self.root.getvar)

372+self.assertRaises(TypeError, self.root.setvar)

373+self.assertRaises(TypeError, self.root.setvar, 'test_var')

370374371375deftest_register(self):

372376result= []

@@ -598,6 +602,8 @@ def test_wait_variable(self):

598602self.root.after(1, var.set, 'done')

599603self.root.wait_variable(var) # Returns once the variable is set.

600604self.assertEqual(var.get(), 'done')

605+# The name is required (gh-152587).

606+self.assertRaises(TypeError, self.root.wait_variable)

601607602608deftest_wait_window(self):

603609top=tkinter.Toplevel(self.root)

Original file line numberDiff line numberDiff line change@@ -818,7 +818,7 @@ def tk_inactive(self, reset=False, *, displayof=0):

818818else:

819819returnself.tk.getint(self.tk.call(args))

820820821-defwait_variable(self, name='PY_VAR'):

821+defwait_variable(self, name):

822822"""Wait until the variable is modified.

823823824824 A parameter of type IntVar, StringVar, DoubleVar or

@@ -843,11 +843,11 @@ def wait_visibility(self, window=None):

843843window=self

844844self.tk.call('tkwait', 'visibility', window._w)

845845846-defsetvar(self, name='PY_VAR', value='1'):

846+defsetvar(self, name, value):

847847"""Set Tcl variable NAME to VALUE."""

848848self.tk.setvar(name, value)

849849850-defgetvar(self, name='PY_VAR'):

850+defgetvar(self, name):

851851"""Return value of Tcl variable NAME."""

852852returnself.tk.getvar(name)

853853Original file line numberDiff line numberDiff line change@@ -0,0 +1,5 @@

1+In :mod:`tkinter`, the *name* parameter of the

2+:meth:`~tkinter.Misc.wait_variable`, :meth:`~tkinter.Misc.setvar` and

3+:meth:`~tkinter.Misc.getvar` methods and the *value* parameter of

4+:meth:`!setvar` are now required. Their former default values

5+(``'PY_VAR'`` and ``'1'``) were not meaningful.