mirror of
https://github.com/python/cpython.git
synced 2026-01-06 07:22:09 +00:00
gh-126899: Add **kw to tkinter.Misc.after and tkinter.Misc.after_idle (#126900)
--------- Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
parent
04673d2f14
commit
7ea523f47c
5 changed files with 31 additions and 8 deletions
|
|
@ -576,6 +576,14 @@ sys
|
|||
from other interpreters than the one it's called in.
|
||||
|
||||
|
||||
tkinter
|
||||
-------
|
||||
|
||||
* Make tkinter widget methods :meth:`!after` and :meth:`!after_idle` accept
|
||||
arguments passed by keyword.
|
||||
(Contributed by Zhikang Yan in :gh:`126899`.)
|
||||
|
||||
|
||||
unicodedata
|
||||
-----------
|
||||
|
||||
|
|
|
|||
|
|
@ -123,9 +123,9 @@ def test_tk_setPalette(self):
|
|||
def test_after(self):
|
||||
root = self.root
|
||||
|
||||
def callback(start=0, step=1):
|
||||
def callback(start=0, step=1, *, end=0):
|
||||
nonlocal count
|
||||
count = start + step
|
||||
count = start + step + end
|
||||
|
||||
# Without function, sleeps for ms.
|
||||
self.assertIsNone(root.after(1))
|
||||
|
|
@ -161,12 +161,18 @@ def callback(start=0, step=1):
|
|||
root.update() # Process all pending events.
|
||||
self.assertEqual(count, 53)
|
||||
|
||||
# Set up with callback with keyword args.
|
||||
count = 0
|
||||
timer1 = root.after(0, callback, 42, step=11, end=1)
|
||||
root.update() # Process all pending events.
|
||||
self.assertEqual(count, 54)
|
||||
|
||||
def test_after_idle(self):
|
||||
root = self.root
|
||||
|
||||
def callback(start=0, step=1):
|
||||
def callback(start=0, step=1, *, end=0):
|
||||
nonlocal count
|
||||
count = start + step
|
||||
count = start + step + end
|
||||
|
||||
# Set up with callback with no args.
|
||||
count = 0
|
||||
|
|
@ -193,6 +199,12 @@ def callback(start=0, step=1):
|
|||
with self.assertRaises(tkinter.TclError):
|
||||
root.tk.call(script)
|
||||
|
||||
# Set up with callback with keyword args.
|
||||
count = 0
|
||||
idle1 = root.after_idle(callback, 42, step=11, end=1)
|
||||
root.update() # Process all pending events.
|
||||
self.assertEqual(count, 54)
|
||||
|
||||
def test_after_cancel(self):
|
||||
root = self.root
|
||||
|
||||
|
|
|
|||
|
|
@ -847,7 +847,7 @@ def tk_focusPrev(self):
|
|||
if not name: return None
|
||||
return self._nametowidget(name)
|
||||
|
||||
def after(self, ms, func=None, *args):
|
||||
def after(self, ms, func=None, *args, **kw):
|
||||
"""Call function once after given time.
|
||||
|
||||
MS specifies the time in milliseconds. FUNC gives the
|
||||
|
|
@ -861,7 +861,7 @@ def after(self, ms, func=None, *args):
|
|||
else:
|
||||
def callit():
|
||||
try:
|
||||
func(*args)
|
||||
func(*args, **kw)
|
||||
finally:
|
||||
try:
|
||||
self.deletecommand(name)
|
||||
|
|
@ -875,13 +875,13 @@ def callit():
|
|||
name = self._register(callit)
|
||||
return self.tk.call('after', ms, name)
|
||||
|
||||
def after_idle(self, func, *args):
|
||||
def after_idle(self, func, *args, **kw):
|
||||
"""Call FUNC once if the Tcl main loop has no event to
|
||||
process.
|
||||
|
||||
Return an identifier to cancel the scheduling with
|
||||
after_cancel."""
|
||||
return self.after('idle', func, *args)
|
||||
return self.after('idle', func, *args, **kw)
|
||||
|
||||
def after_cancel(self, id):
|
||||
"""Cancel scheduling of function identified with ID.
|
||||
|
|
|
|||
|
|
@ -2079,6 +2079,7 @@ Arnon Yaari
|
|||
Alakshendra Yadav
|
||||
Hirokazu Yamamoto
|
||||
Masayuki Yamamoto
|
||||
Zhikang Yan
|
||||
Jingchen Ye
|
||||
Ka-Ping Yee
|
||||
Chi Hsuan Yen
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
Make tkinter widget methods :meth:`!after` and :meth:`!after_idle` accept
|
||||
arguments passed by keyword.
|
||||
Loading…
Add table
Add a link
Reference in a new issue