Skip to content

Commit 508e578

Browse files
Improve stubs for setup_master, ttk.Style.configure, Style.map`
1 parent c335867 commit 508e578

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

stdlib/tkinter/ttk.pyi

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import tkinter
33
from _typeshed import MaybeNone
44
from collections.abc import Callable
55
from tkinter.font import _FontDescription
6-
from typing import Any, Literal, TypedDict, overload
7-
from typing_extensions import TypeAlias
6+
from typing import Any, Literal, TypedDict, overload, Iterable
7+
from typing_extensions import TypeAlias, Unpack
88

99
__all__ = [
1010
"Button",
@@ -35,7 +35,7 @@ __all__ = [
3535
]
3636

3737
def tclobjs_to_py(adict: dict[Any, Any]) -> dict[Any, Any]: ...
38-
def setup_master(master=None): ...
38+
def setup_master(master: tkinter.Misc | None = None): ...
3939

4040
_Padding: TypeAlias = (
4141
tkinter._ScreenUnits
@@ -47,15 +47,26 @@ _Padding: TypeAlias = (
4747

4848
# from ttk_widget (aka ttk::widget) manual page, differs from tkinter._Compound
4949
_TtkCompound: TypeAlias = Literal["", "text", "image", tkinter._Compound]
50+
# Last item (option value to apply) varies between different options so use Any.
51+
# This doesn't have to be a tuple so also add a less precise Iterable option.
52+
_Statespec: TypeAlias = tuple[Unpack[tuple[str, ...]], Any] | Iterable[str | Any]
5053

5154
class Style:
5255
master: tkinter.Misc
5356
tk: _tkinter.TkappType
5457
def __init__(self, master: tkinter.Misc | None = None) -> None: ...
55-
def configure(self, style, query_opt=None, **kw): ...
56-
def map(self, style, query_opt=None, **kw): ...
5758
def lookup(self, style, option, state=None, default=None): ...
5859
def layout(self, style, layoutspec=None): ...
60+
@overload
61+
def configure(self, style: str) -> dict[str, Any]: ...
62+
@overload
63+
def configure(self, style: str, query_opt: str, **kw: Any) -> Any: ...
64+
@overload
65+
def configure(self, style: str, query_opt: None = None, **kw: Any) -> None: ...
66+
@overload
67+
def map(self, style: str, query_opt: str) -> _Statespec: ...
68+
@overload
69+
def map(self, style: str, **kw: Iterable[_Statespec]) -> dict[str, _Statespec]: ...
5970
def element_create(self, elementname, etype, *args, **kw) -> None: ...
6071
def element_names(self): ...
6172
def element_options(self, elementname): ...

0 commit comments

Comments
 (0)