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)
|
self.deletecommand(name)
|
||||||
except TclError:
|
except TclError:
|
||||||
pass
|
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)
|
name = self._register(callit)
|
||||||
return self.tk.call('after', ms, name)
|
return self.tk.call('after', ms, name)
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import functools
|
||||||
import unittest
|
import unittest
|
||||||
import tkinter
|
import tkinter
|
||||||
import enum
|
import enum
|
||||||
|
@ -98,6 +99,12 @@ def callback(start=0, step=1):
|
||||||
with self.assertRaises(tkinter.TclError):
|
with self.assertRaises(tkinter.TclError):
|
||||||
root.tk.call(script)
|
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):
|
def test_after_idle(self):
|
||||||
root = self.root
|
root = self.root
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
:mod:`tkinter`'s ``after()`` method now supports callables without the ``__name__`` attribute.
|
Loading…
Reference in New Issue