tkinter: Use a TypeVarTuple in .after() and .after_idle() methods (#11014)

This commit is contained in:
Akuli
2023-12-09 01:00:13 +02:00
committed by GitHub
parent a08d2d5d66
commit 51ec2f0900
2 changed files with 13 additions and 3 deletions

View File

@@ -6,7 +6,7 @@ from tkinter.constants import *
from tkinter.font import _FontDescription
from types import TracebackType
from typing import Any, Generic, NamedTuple, TypeVar, overload, type_check_only
from typing_extensions import Literal, TypeAlias, TypedDict, deprecated
from typing_extensions import Literal, TypeAlias, TypedDict, TypeVarTuple, Unpack, deprecated
if sys.version_info >= (3, 9):
__all__ = [
@@ -314,6 +314,8 @@ getdouble: Incomplete
def getboolean(s): ...
_Ts = TypeVarTuple("_Ts")
class _GridIndexInfo(TypedDict, total=False):
minsize: _ScreenUnits
pad: _ScreenUnits
@@ -349,9 +351,9 @@ class Misc:
def tk_focusPrev(self) -> Misc | None: ...
# .after() can be called without the "func" argument, but it is basically never what you want.
# It behaves like time.sleep() and freezes the GUI app.
def after(self, ms: int | Literal["idle"], func: Callable[..., object], *args: Any) -> str: ...
def after(self, ms: int | Literal["idle"], func: Callable[[Unpack[_Ts]], object], *args: Unpack[_Ts]) -> str: ...
# after_idle is essentially partialmethod(after, "idle")
def after_idle(self, func: Callable[..., object], *args: Any) -> str: ...
def after_idle(self, func: Callable[[Unpack[_Ts]], object], *args: Unpack[_Ts]) -> str: ...
def after_cancel(self, id: str) -> None: ...
def bell(self, displayof: Literal[0] | Misc | None = 0) -> None: ...
def clipboard_get(self, *, displayof: Misc = ..., type: str = ...) -> str: ...

View File

@@ -12,3 +12,11 @@ def custom_handler(exc: type[BaseException], val: BaseException, tb: types.Trace
root = tkinter.Tk()
root.report_callback_exception = traceback.print_exception
root.report_callback_exception = custom_handler
def foo(x: int, y: str) -> None:
pass
root.after(1000, foo, 10, "lol")
root.after(1000, foo, 10, 10) # type: ignore