Skip to content

Commit 746dbbc

Browse files
authored
Complete ttkthemes (#13858)
1 parent 5306a8b commit 746dbbc

File tree

7 files changed

+71
-19
lines changed

7 files changed

+71
-19
lines changed

pyrightconfig.stricter.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,6 @@
9090
"stubs/shapely",
9191
"stubs/tensorflow",
9292
"stubs/tqdm",
93-
"stubs/ttkthemes",
9493
"stubs/vobject",
9594
"stubs/workalendar",
9695
"stubs/wurlitzer",

stdlib/tkinter/__init__.pyi

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -977,6 +977,7 @@ class Tk(Misc, Wm):
977977
sync: bool = False,
978978
use: str | None = None,
979979
) -> None: ...
980+
# Keep this in sync with ttktheme.ThemedTk. See issue #13858
980981
@overload
981982
def configure(
982983
self,

stubs/ttkthemes/ttkthemes/_imgops.pyi

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,7 @@
1-
def shift_hue(image, hue): ...
2-
def make_transparent(image): ...
1+
from typing import Any
2+
from typing_extensions import TypeAlias
3+
4+
_Image: TypeAlias = Any # actually PIL.Image, but not worth adding a dependency
5+
6+
def shift_hue(image: _Image, hue: float) -> _Image: ...
7+
def make_transparent(image: _Image) -> _Image: ...

stubs/ttkthemes/ttkthemes/_utils.pyi

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
from _typeshed import Incomplete
1+
from _typeshed import FileDescriptorOrPath, StrOrBytesPath
2+
from contextlib import AbstractContextManager
23

3-
def temporary_chdir(new_dir) -> None: ...
4-
def get_file_directory(): ...
5-
def get_temp_directory(): ...
6-
def get_themes_directory(theme_name: Incomplete | None = None, png: bool = False): ...
7-
def create_directory(directory): ...
4+
def temporary_chdir(new_dir: FileDescriptorOrPath) -> AbstractContextManager[None]: ...
5+
def get_file_directory() -> str: ...
6+
def get_temp_directory() -> str: ...
7+
def get_themes_directory(theme_name: str | None = None, png: bool = False) -> str: ...
8+
def create_directory(directory: StrOrBytesPath) -> StrOrBytesPath: ...

stubs/ttkthemes/ttkthemes/_widget.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ class ThemedWidget:
77
PACKAGES: ClassVar[dict[str, str]]
88
tk: _tkinter.TkappType
99
png_support: bool
10-
def __init__(self, tk_interpreter, gif_override: bool = False) -> None: ...
10+
def __init__(self, tk_interpreter: _tkinter.TkappType, gif_override: bool = False) -> None: ...
1111
def set_theme(self, theme_name: str) -> None: ...
1212
def get_themes(self) -> list[str]: ...
1313
@property

stubs/ttkthemes/ttkthemes/themed_style.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ from ._widget import ThemedWidget
55

66
class ThemedStyle(ttk.Style, ThemedWidget):
77
def __init__(
8-
self, master: tkinter.Misc | None = ..., *, theme: str | None = ..., gif_override: bool | None = ..., **kwargs
8+
self, master: tkinter.Misc | None = ..., *, theme: str | None = None, gif_override: bool | None = False
99
) -> None: ...
1010
# theme_use() can't return None (differs from ttk.Style)
1111
def theme_use(self, theme_name: str | None = None) -> str: ... # type: ignore[override]

stubs/ttkthemes/ttkthemes/themed_tk.pyi

Lines changed: 54 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import tkinter
2-
from _typeshed import Incomplete
2+
from typing import Any
33

44
from ._widget import ThemedWidget
55

@@ -21,10 +21,56 @@ class ThemedTk(tkinter.Tk, ThemedWidget):
2121
background: bool | None = ..., # old alias for themebg
2222
gif_override: bool = ...,
2323
) -> None: ...
24-
def set_theme(self, theme_name, toplevel: bool | None = None, themebg: bool | None = None) -> None: ...
25-
# TODO: currently no good way to say "use the same big list of kwargs as parent class but also add these"
26-
def config(self, kw: Incomplete | None = None, **kwargs): ... # type: ignore[override]
27-
def cget(self, k): ...
28-
def configure(self, kw: Incomplete | None = None, **kwargs): ... # type: ignore[override]
29-
def __getitem__(self, k): ...
30-
def __setitem__(self, k, v) -> None: ...
24+
def set_theme(self, theme_name: str, toplevel: bool | None = None, themebg: bool | None = None) -> None: ...
25+
# Keep this in sync with tkinter.Tk
26+
def config( # type: ignore[override]
27+
self,
28+
kw: dict[str, Any] | None = None,
29+
*,
30+
themebg: bool | None = ...,
31+
toplevel: bool | None = ...,
32+
theme: str | None = ...,
33+
background: str = ...,
34+
bd: tkinter._ScreenUnits = ...,
35+
bg: str = ...,
36+
border: tkinter._ScreenUnits = ...,
37+
borderwidth: tkinter._ScreenUnits = ...,
38+
cursor: tkinter._Cursor = ...,
39+
height: tkinter._ScreenUnits = ...,
40+
highlightbackground: str = ...,
41+
highlightcolor: str = ...,
42+
highlightthickness: tkinter._ScreenUnits = ...,
43+
menu: tkinter.Menu = ...,
44+
padx: tkinter._ScreenUnits = ...,
45+
pady: tkinter._ScreenUnits = ...,
46+
relief: tkinter._Relief = ...,
47+
takefocus: tkinter._TakeFocusValue = ...,
48+
width: tkinter._ScreenUnits = ...,
49+
) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
50+
def cget(self, k: str) -> Any: ...
51+
def configure( # type: ignore[override]
52+
self,
53+
kw: dict[str, Any] | None = None,
54+
*,
55+
themebg: bool | None = ...,
56+
toplevel: bool | None = ...,
57+
theme: str | None = ...,
58+
background: str = ...,
59+
bd: tkinter._ScreenUnits = ...,
60+
bg: str = ...,
61+
border: tkinter._ScreenUnits = ...,
62+
borderwidth: tkinter._ScreenUnits = ...,
63+
cursor: tkinter._Cursor = ...,
64+
height: tkinter._ScreenUnits = ...,
65+
highlightbackground: str = ...,
66+
highlightcolor: str = ...,
67+
highlightthickness: tkinter._ScreenUnits = ...,
68+
menu: tkinter.Menu = ...,
69+
padx: tkinter._ScreenUnits = ...,
70+
pady: tkinter._ScreenUnits = ...,
71+
relief: tkinter._Relief = ...,
72+
takefocus: tkinter._TakeFocusValue = ...,
73+
width: tkinter._ScreenUnits = ...,
74+
) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
75+
def __getitem__(self, k: str) -> Any: ...
76+
def __setitem__(self, k: str, v: Any) -> None: ...

0 commit comments

Comments
 (0)