mirror of https://github.com/python/cpython.git
bpo-44404: tkinter `after` support callable classes (GH-26812)
This commit is contained in:
parent
5c7940257e
commit
e9c8f784fa
|
@ -841,7 +841,11 @@ def callit():
|
|||
self.deletecommand(name)
|
||||
except TclError:
|
||||
pass
|
||||
callit.__name__ = func.__name__
|
||||
try:
|
||||
callit.__name__ = func.__name__
|
||||
except AttributeError:
|
||||
# Required for callable classes (bpo-44404)
|
||||
callit.__name__ = type(func).__name__
|
||||
name = self._register(callit)
|
||||
return self.tk.call('after', ms, name)
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import functools
|
||||
import unittest
|
||||
import tkinter
|
||||
import enum
|
||||
|
@ -98,6 +99,12 @@ def callback(start=0, step=1):
|
|||
with self.assertRaises(tkinter.TclError):
|
||||
root.tk.call(script)
|
||||
|
||||
# Call with a callable class
|
||||
count = 0
|
||||
timer1 = root.after(0, functools.partial(callback, 42, 11))
|
||||
root.update() # Process all pending events.
|
||||
self.assertEqual(count, 53)
|
||||
|
||||
def test_after_idle(self):
|
||||
root = self.root
|
||||
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
:mod:`tkinter`'s ``after()`` method now supports callables without the ``__name__`` attribute.
|
Loading…
Reference in New Issue