massive update, probably broken
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-pyright / node_modules / pyright / dist / typeshed-fallback / stdlib / tkinter / ttk.pyi
diff --git a/.config/coc/extensions/node_modules/coc-pyright/node_modules/pyright/dist/typeshed-fallback/stdlib/tkinter/ttk.pyi b/.config/coc/extensions/node_modules/coc-pyright/node_modules/pyright/dist/typeshed-fallback/stdlib/tkinter/ttk.pyi
new file mode 100644 (file)
index 0000000..be0713e
--- /dev/null
@@ -0,0 +1,1142 @@
+import _tkinter
+import sys
+import tkinter
+from tkinter.font import _FontDescription
+from typing import Any, Callable, Tuple, Union, overload
+from typing_extensions import Literal, TypedDict
+
+def tclobjs_to_py(adict): ...
+def setup_master(master: Any | None = ...): ...
+
+# from ttk_widget (aka ttk::widget) manual page, differs from tkinter._Compound
+_TtkCompound = Literal["text", "image", tkinter._Compound]
+
+class Style:
+    master: Any
+    tk: _tkinter.TkappType
+    def __init__(self, master: tkinter.Misc | None = ...): ...
+    def configure(self, style, query_opt: Any | None = ..., **kw): ...
+    def map(self, style, query_opt: Any | None = ..., **kw): ...
+    def lookup(self, style, option, state: Any | None = ..., default: Any | None = ...): ...
+    def layout(self, style, layoutspec: Any | None = ...): ...
+    def element_create(self, elementname, etype, *args, **kw): ...
+    def element_names(self): ...
+    def element_options(self, elementname): ...
+    def theme_create(self, themename, parent: Any | None = ..., settings: Any | None = ...): ...
+    def theme_settings(self, themename, settings): ...
+    def theme_names(self) -> Tuple[str, ...]: ...
+    @overload
+    def theme_use(self, themename: str) -> None: ...
+    @overload
+    def theme_use(self, themename: None = ...) -> str: ...
+
+class Widget(tkinter.Widget):
+    def __init__(self, master: tkinter.Misc | None, widgetname, kw: Any | None = ...): ...
+    def identify(self, x, y): ...
+    def instate(self, statespec, callback: Any | None = ..., *args, **kw): ...
+    def state(self, statespec: Any | None = ...): ...
+
+class Button(Widget):
+    def __init__(
+        self,
+        master: tkinter.Misc | None = ...,
+        *,
+        class_: str = ...,
+        command: tkinter._ButtonCommand = ...,
+        compound: _TtkCompound = ...,
+        cursor: tkinter._Cursor = ...,
+        default: Literal["normal", "active", "disabled"] = ...,
+        image: tkinter._ImageSpec = ...,
+        name: str = ...,
+        padding: Any = ...,  # undocumented
+        state: str = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        text: float | str = ...,
+        textvariable: tkinter.Variable = ...,
+        underline: int = ...,
+        width: int | Literal[""] = ...,
+    ) -> None: ...
+    @overload
+    def configure(
+        self,
+        cnf: dict[str, Any] | None = ...,
+        *,
+        command: tkinter._ButtonCommand = ...,
+        compound: _TtkCompound = ...,
+        cursor: tkinter._Cursor = ...,
+        default: Literal["normal", "active", "disabled"] = ...,
+        image: tkinter._ImageSpec = ...,
+        padding: Any = ...,
+        state: str = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        text: float | str = ...,
+        textvariable: tkinter.Variable = ...,
+        underline: int = ...,
+        width: int | Literal[""] = ...,
+    ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
+    @overload
+    def configure(self, cnf: str) -> tuple[str, str, str, Any, Any]: ...
+    config = configure
+    def invoke(self) -> Any: ...
+
+class Checkbutton(Widget):
+    def __init__(
+        self,
+        master: tkinter.Misc | None = ...,
+        *,
+        class_: str = ...,
+        command: tkinter._ButtonCommand = ...,
+        compound: _TtkCompound = ...,
+        cursor: tkinter._Cursor = ...,
+        image: tkinter._ImageSpec = ...,
+        name: str = ...,
+        offvalue: Any = ...,
+        onvalue: Any = ...,
+        padding: Any = ...,  # undocumented
+        state: str = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        text: float | str = ...,
+        textvariable: tkinter.Variable = ...,
+        underline: int = ...,
+        # Seems like variable can be empty string, but actually setting it to
+        # empty string segfaults before Tcl 8.6.9. Search for ttk::checkbutton
+        # here: https://sourceforge.net/projects/tcl/files/Tcl/8.6.9/tcltk-release-notes-8.6.9.txt/view
+        variable: tkinter.Variable = ...,
+        width: int | Literal[""] = ...,
+    ) -> None: ...
+    @overload
+    def configure(
+        self,
+        cnf: dict[str, Any] | None = ...,
+        *,
+        command: tkinter._ButtonCommand = ...,
+        compound: _TtkCompound = ...,
+        cursor: tkinter._Cursor = ...,
+        image: tkinter._ImageSpec = ...,
+        offvalue: Any = ...,
+        onvalue: Any = ...,
+        padding: Any = ...,
+        state: str = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        text: float | str = ...,
+        textvariable: tkinter.Variable = ...,
+        underline: int = ...,
+        variable: tkinter.Variable = ...,
+        width: int | Literal[""] = ...,
+    ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
+    @overload
+    def configure(self, cnf: str) -> tuple[str, str, str, Any, Any]: ...
+    config = configure
+    def invoke(self) -> Any: ...
+
+class Entry(Widget, tkinter.Entry):
+    def __init__(
+        self,
+        master: tkinter.Misc | None = ...,
+        widget: str | None = ...,
+        *,
+        background: tkinter._Color = ...,  # undocumented
+        class_: str = ...,
+        cursor: tkinter._Cursor = ...,
+        exportselection: bool = ...,
+        font: _FontDescription = ...,
+        foreground: tkinter._Color = ...,
+        invalidcommand: tkinter._EntryValidateCommand = ...,
+        justify: Literal["left", "center", "right"] = ...,
+        name: str = ...,
+        show: str = ...,
+        state: str = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        textvariable: tkinter.Variable = ...,
+        validate: Literal["none", "focus", "focusin", "focusout", "key", "all"] = ...,
+        validatecommand: tkinter._EntryValidateCommand = ...,
+        width: int = ...,
+        xscrollcommand: tkinter._XYScrollCommand = ...,
+    ) -> None: ...
+    @overload  # type: ignore
+    def configure(
+        self,
+        cnf: dict[str, Any] | None = ...,
+        *,
+        background: tkinter._Color = ...,
+        cursor: tkinter._Cursor = ...,
+        exportselection: bool = ...,
+        font: _FontDescription = ...,
+        foreground: tkinter._Color = ...,
+        invalidcommand: tkinter._EntryValidateCommand = ...,
+        justify: Literal["left", "center", "right"] = ...,
+        show: str = ...,
+        state: str = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        textvariable: tkinter.Variable = ...,
+        validate: Literal["none", "focus", "focusin", "focusout", "key", "all"] = ...,
+        validatecommand: tkinter._EntryValidateCommand = ...,
+        width: int = ...,
+        xscrollcommand: tkinter._XYScrollCommand = ...,
+    ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
+    @overload
+    def configure(self, cnf: str) -> tuple[str, str, str, Any, Any]: ...
+    # config must be copy/pasted, otherwise ttk.Entry().config is mypy error (don't know why)
+    @overload  # type: ignore
+    def config(
+        self,
+        cnf: dict[str, Any] | None = ...,
+        *,
+        background: tkinter._Color = ...,
+        cursor: tkinter._Cursor = ...,
+        exportselection: bool = ...,
+        font: _FontDescription = ...,
+        foreground: tkinter._Color = ...,
+        invalidcommand: tkinter._EntryValidateCommand = ...,
+        justify: Literal["left", "center", "right"] = ...,
+        show: str = ...,
+        state: str = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        textvariable: tkinter.Variable = ...,
+        validate: Literal["none", "focus", "focusin", "focusout", "key", "all"] = ...,
+        validatecommand: tkinter._EntryValidateCommand = ...,
+        width: int = ...,
+        xscrollcommand: tkinter._XYScrollCommand = ...,
+    ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
+    @overload
+    def config(self, cnf: str) -> tuple[str, str, str, Any, Any]: ...
+    def bbox(self, index): ...
+    def identify(self, x, y): ...
+    def validate(self): ...
+
+class Combobox(Entry):
+    def __init__(
+        self,
+        master: tkinter.Misc | None = ...,
+        *,
+        background: tkinter._Color = ...,  # undocumented
+        class_: str = ...,
+        cursor: tkinter._Cursor = ...,
+        exportselection: bool = ...,
+        font: _FontDescription = ...,  # undocumented
+        foreground: tkinter._Color = ...,  # undocumented
+        height: int = ...,
+        invalidcommand: tkinter._EntryValidateCommand = ...,  # undocumented
+        justify: Literal["left", "center", "right"] = ...,
+        name: str = ...,
+        postcommand: Callable[[], Any] | str = ...,
+        show: Any = ...,  # undocumented
+        state: str = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        textvariable: tkinter.Variable = ...,
+        validate: Literal["none", "focus", "focusin", "focusout", "key", "all"] = ...,  # undocumented
+        validatecommand: tkinter._EntryValidateCommand = ...,  # undocumented
+        values: list[str] | Tuple[str, ...] = ...,
+        width: int = ...,
+        xscrollcommand: tkinter._XYScrollCommand = ...,  # undocumented
+    ) -> None: ...
+    @overload  # type: ignore
+    def configure(
+        self,
+        cnf: dict[str, Any] | None = ...,
+        *,
+        background: tkinter._Color = ...,
+        cursor: tkinter._Cursor = ...,
+        exportselection: bool = ...,
+        font: _FontDescription = ...,
+        foreground: tkinter._Color = ...,
+        height: int = ...,
+        invalidcommand: tkinter._EntryValidateCommand = ...,
+        justify: Literal["left", "center", "right"] = ...,
+        postcommand: Callable[[], Any] | str = ...,
+        show: Any = ...,
+        state: str = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        textvariable: tkinter.Variable = ...,
+        validate: Literal["none", "focus", "focusin", "focusout", "key", "all"] = ...,
+        validatecommand: tkinter._EntryValidateCommand = ...,
+        values: list[str] | Tuple[str, ...] = ...,
+        width: int = ...,
+        xscrollcommand: tkinter._XYScrollCommand = ...,
+    ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
+    @overload
+    def configure(self, cnf: str) -> tuple[str, str, str, Any, Any]: ...
+    # config must be copy/pasted, otherwise ttk.Combobox().config is mypy error (don't know why)
+    @overload  # type: ignore
+    def config(
+        self,
+        cnf: dict[str, Any] | None = ...,
+        *,
+        background: tkinter._Color = ...,
+        cursor: tkinter._Cursor = ...,
+        exportselection: bool = ...,
+        font: _FontDescription = ...,
+        foreground: tkinter._Color = ...,
+        height: int = ...,
+        invalidcommand: tkinter._EntryValidateCommand = ...,
+        justify: Literal["left", "center", "right"] = ...,
+        postcommand: Callable[[], Any] | str = ...,
+        show: Any = ...,
+        state: str = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        textvariable: tkinter.Variable = ...,
+        validate: Literal["none", "focus", "focusin", "focusout", "key", "all"] = ...,
+        validatecommand: tkinter._EntryValidateCommand = ...,
+        values: list[str] | Tuple[str, ...] = ...,
+        width: int = ...,
+        xscrollcommand: tkinter._XYScrollCommand = ...,
+    ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
+    @overload
+    def config(self, cnf: str) -> tuple[str, str, str, Any, Any]: ...
+    def current(self, newindex: Any | None = ...): ...
+    def set(self, value): ...
+
+class Frame(Widget):
+    def __init__(
+        self,
+        master: tkinter.Misc | None = ...,
+        *,
+        border: tkinter._ScreenUnits = ...,
+        borderwidth: tkinter._ScreenUnits = ...,
+        class_: str = ...,
+        cursor: tkinter._Cursor = ...,
+        height: tkinter._ScreenUnits = ...,
+        name: str = ...,
+        padding: tkinter._Padding = ...,
+        relief: tkinter._Relief = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        width: tkinter._ScreenUnits = ...,
+    ) -> None: ...
+    @overload
+    def configure(
+        self,
+        cnf: dict[str, Any] | None = ...,
+        *,
+        border: tkinter._ScreenUnits = ...,
+        borderwidth: tkinter._ScreenUnits = ...,
+        cursor: tkinter._Cursor = ...,
+        height: tkinter._ScreenUnits = ...,
+        padding: tkinter._Padding = ...,
+        relief: tkinter._Relief = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        width: tkinter._ScreenUnits = ...,
+    ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
+    @overload
+    def configure(self, cnf: str) -> tuple[str, str, str, Any, Any]: ...
+    config = configure
+
+class Label(Widget):
+    def __init__(
+        self,
+        master: tkinter.Misc | None = ...,
+        *,
+        anchor: tkinter._Anchor = ...,
+        background: tkinter._Color = ...,
+        border: tkinter._ScreenUnits = ...,  # alias for borderwidth
+        borderwidth: tkinter._ScreenUnits = ...,  # undocumented
+        class_: str = ...,
+        compound: _TtkCompound = ...,
+        cursor: tkinter._Cursor = ...,
+        font: _FontDescription = ...,
+        foreground: tkinter._Color = ...,
+        image: tkinter._ImageSpec = ...,
+        justify: Literal["left", "center", "right"] = ...,
+        name: str = ...,
+        padding: tkinter._Padding = ...,
+        relief: tkinter._Relief = ...,
+        state: str = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        text: float | str = ...,
+        textvariable: tkinter.Variable = ...,
+        underline: int = ...,
+        width: int | Literal[""] = ...,
+        wraplength: tkinter._ScreenUnits = ...,
+    ) -> None: ...
+    @overload
+    def configure(
+        self,
+        cnf: dict[str, Any] | None = ...,
+        *,
+        anchor: tkinter._Anchor = ...,
+        background: tkinter._Color = ...,
+        border: tkinter._ScreenUnits = ...,
+        borderwidth: tkinter._ScreenUnits = ...,
+        compound: _TtkCompound = ...,
+        cursor: tkinter._Cursor = ...,
+        font: _FontDescription = ...,
+        foreground: tkinter._Color = ...,
+        image: tkinter._ImageSpec = ...,
+        justify: Literal["left", "center", "right"] = ...,
+        padding: tkinter._Padding = ...,
+        relief: tkinter._Relief = ...,
+        state: str = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        text: float | str = ...,
+        textvariable: tkinter.Variable = ...,
+        underline: int = ...,
+        width: int | Literal[""] = ...,
+        wraplength: tkinter._ScreenUnits = ...,
+    ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
+    @overload
+    def configure(self, cnf: str) -> tuple[str, str, str, Any, Any]: ...
+    config = configure
+
+class Labelframe(Widget):
+    def __init__(
+        self,
+        master: tkinter.Misc | None = ...,
+        *,
+        border: tkinter._ScreenUnits = ...,
+        borderwidth: tkinter._ScreenUnits = ...,  # undocumented
+        class_: str = ...,
+        cursor: tkinter._Cursor = ...,
+        height: tkinter._ScreenUnits = ...,
+        labelanchor: Literal["nw", "n", "ne", "en", "e", "es", "se", "s", "sw", "ws", "w", "wn"] = ...,
+        labelwidget: tkinter.Misc = ...,
+        name: str = ...,
+        padding: tkinter._Padding = ...,
+        relief: tkinter._Relief = ...,  # undocumented
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        text: float | str = ...,
+        underline: int = ...,
+        width: tkinter._ScreenUnits = ...,
+    ) -> None: ...
+    @overload
+    def configure(
+        self,
+        cnf: dict[str, Any] | None = ...,
+        *,
+        border: tkinter._ScreenUnits = ...,
+        borderwidth: tkinter._ScreenUnits = ...,
+        cursor: tkinter._Cursor = ...,
+        height: tkinter._ScreenUnits = ...,
+        labelanchor: Literal["nw", "n", "ne", "en", "e", "es", "se", "s", "sw", "ws", "w", "wn"] = ...,
+        labelwidget: tkinter.Misc = ...,
+        padding: tkinter._Padding = ...,
+        relief: tkinter._Relief = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        text: float | str = ...,
+        underline: int = ...,
+        width: tkinter._ScreenUnits = ...,
+    ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
+    @overload
+    def configure(self, cnf: str) -> tuple[str, str, str, Any, Any]: ...
+    config = configure
+
+LabelFrame = Labelframe
+
+class Menubutton(Widget):
+    def __init__(
+        self,
+        master: tkinter.Misc | None = ...,
+        *,
+        class_: str = ...,
+        compound: _TtkCompound = ...,
+        cursor: tkinter._Cursor = ...,
+        direction: Literal["above", "below", "left", "right", "flush"] = ...,
+        image: tkinter._ImageSpec = ...,
+        menu: tkinter.Menu = ...,
+        name: str = ...,
+        padding: Any = ...,  # undocumented
+        state: str = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        text: float | str = ...,
+        textvariable: tkinter.Variable = ...,
+        underline: int = ...,
+        width: int | Literal[""] = ...,
+    ) -> None: ...
+    @overload
+    def configure(
+        self,
+        cnf: dict[str, Any] | None = ...,
+        *,
+        compound: _TtkCompound = ...,
+        cursor: tkinter._Cursor = ...,
+        direction: Literal["above", "below", "left", "right", "flush"] = ...,
+        image: tkinter._ImageSpec = ...,
+        menu: tkinter.Menu = ...,
+        padding: Any = ...,
+        state: str = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        text: float | str = ...,
+        textvariable: tkinter.Variable = ...,
+        underline: int = ...,
+        width: int | Literal[""] = ...,
+    ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
+    @overload
+    def configure(self, cnf: str) -> tuple[str, str, str, Any, Any]: ...
+    config = configure
+
+class Notebook(Widget):
+    def __init__(
+        self,
+        master: tkinter.Misc | None = ...,
+        *,
+        class_: str = ...,
+        cursor: tkinter._Cursor = ...,
+        height: int = ...,
+        name: str = ...,
+        padding: tkinter._Padding = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        width: int = ...,
+    ) -> None: ...
+    @overload
+    def configure(
+        self,
+        cnf: dict[str, Any] | None = ...,
+        *,
+        cursor: tkinter._Cursor = ...,
+        height: int = ...,
+        padding: tkinter._Padding = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        width: int = ...,
+    ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
+    @overload
+    def configure(self, cnf: str) -> tuple[str, str, str, Any, Any]: ...
+    config = configure
+    def add(
+        self,
+        child: tkinter.Widget,
+        *,
+        state: Literal["normal", "disabled", "hidden"] = ...,
+        sticky: str = ...,  # consists of letters 'n', 's', 'w', 'e', no repeats, may be empty
+        padding: tkinter._Padding = ...,
+        text: str = ...,
+        image: Any = ...,  # Sequence of an image name, followed by zero or more (sequences of one or more state names followed by an image name)
+        compound: tkinter._Compound = ...,
+        underline: int = ...,
+    ) -> None: ...
+    def forget(self, tab_id): ...
+    def hide(self, tab_id): ...
+    def identify(self, x, y): ...
+    def index(self, tab_id): ...
+    def insert(self, pos, child, **kw): ...
+    def select(self, tab_id: Any | None = ...): ...
+    def tab(self, tab_id, option: Any | None = ..., **kw): ...
+    def tabs(self): ...
+    def enable_traversal(self) -> None: ...
+
+class Panedwindow(Widget, tkinter.PanedWindow):
+    def __init__(
+        self,
+        master: tkinter.Misc | None = ...,
+        *,
+        class_: str = ...,
+        cursor: tkinter._Cursor = ...,
+        # width and height for tkinter.ttk.Panedwindow are int but for tkinter.PanedWindow they are screen units
+        height: int = ...,
+        name: str = ...,
+        orient: Literal["vertical", "horizontal"] = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        width: int = ...,
+    ) -> None: ...
+    def add(self, child: tkinter.Widget, *, weight: int = ..., **kw) -> None: ...
+    @overload  # type: ignore
+    def configure(
+        self,
+        cnf: dict[str, Any] | None = ...,
+        *,
+        cursor: tkinter._Cursor = ...,
+        height: int = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        width: int = ...,
+    ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
+    @overload
+    def configure(self, cnf: str) -> tuple[str, str, str, Any, Any]: ...
+    # config must be copy/pasted, otherwise ttk.Panedwindow().config is mypy error (don't know why)
+    @overload  # type: ignore
+    def config(
+        self,
+        cnf: dict[str, Any] | None = ...,
+        *,
+        cursor: tkinter._Cursor = ...,
+        height: int = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        width: int = ...,
+    ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
+    @overload
+    def config(self, cnf: str) -> tuple[str, str, str, Any, Any]: ...
+    forget: Any
+    def insert(self, pos, child, **kw): ...
+    def pane(self, pane, option: Any | None = ..., **kw): ...
+    def sashpos(self, index, newpos: Any | None = ...): ...
+
+PanedWindow = Panedwindow
+
+class Progressbar(Widget):
+    def __init__(
+        self,
+        master: tkinter.Misc | None = ...,
+        *,
+        class_: str = ...,
+        cursor: tkinter._Cursor = ...,
+        length: tkinter._ScreenUnits = ...,
+        maximum: float = ...,
+        mode: Literal["determinate", "indeterminate"] = ...,
+        name: str = ...,
+        orient: Literal["horizontal", "vertical"] = ...,
+        phase: int = ...,  # docs say read-only but assigning int to this works
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        value: float = ...,
+        variable: tkinter.IntVar | tkinter.DoubleVar = ...,
+    ) -> None: ...
+    @overload
+    def configure(
+        self,
+        cnf: dict[str, Any] | None = ...,
+        *,
+        cursor: tkinter._Cursor = ...,
+        length: tkinter._ScreenUnits = ...,
+        maximum: float = ...,
+        mode: Literal["determinate", "indeterminate"] = ...,
+        orient: Literal["horizontal", "vertical"] = ...,
+        phase: int = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        value: float = ...,
+        variable: tkinter.IntVar | tkinter.DoubleVar = ...,
+    ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
+    @overload
+    def configure(self, cnf: str) -> tuple[str, str, str, Any, Any]: ...
+    config = configure
+    def start(self, interval: Any | None = ...): ...
+    def step(self, amount: Any | None = ...): ...
+    def stop(self): ...
+
+class Radiobutton(Widget):
+    def __init__(
+        self,
+        master: tkinter.Misc | None = ...,
+        *,
+        class_: str = ...,
+        command: tkinter._ButtonCommand = ...,
+        compound: _TtkCompound = ...,
+        cursor: tkinter._Cursor = ...,
+        image: tkinter._ImageSpec = ...,
+        name: str = ...,
+        padding: Any = ...,  # undocumented
+        state: str = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        text: float | str = ...,
+        textvariable: tkinter.Variable = ...,
+        underline: int = ...,
+        value: Any = ...,
+        variable: tkinter.Variable | Literal[""] = ...,
+        width: int | Literal[""] = ...,
+    ) -> None: ...
+    @overload
+    def configure(
+        self,
+        cnf: dict[str, Any] | None = ...,
+        *,
+        command: tkinter._ButtonCommand = ...,
+        compound: _TtkCompound = ...,
+        cursor: tkinter._Cursor = ...,
+        image: tkinter._ImageSpec = ...,
+        padding: Any = ...,
+        state: str = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        text: float | str = ...,
+        textvariable: tkinter.Variable = ...,
+        underline: int = ...,
+        value: Any = ...,
+        variable: tkinter.Variable | Literal[""] = ...,
+        width: int | Literal[""] = ...,
+    ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
+    @overload
+    def configure(self, cnf: str) -> tuple[str, str, str, Any, Any]: ...
+    config = configure
+    def invoke(self) -> Any: ...
+
+class Scale(Widget, tkinter.Scale):
+    def __init__(
+        self,
+        master: tkinter.Misc | None = ...,
+        *,
+        class_: str = ...,
+        command: str | Callable[[str], Any] = ...,
+        cursor: tkinter._Cursor = ...,
+        from_: float = ...,
+        length: tkinter._ScreenUnits = ...,
+        name: str = ...,
+        orient: Literal["horizontal", "vertical"] = ...,
+        state: str = ...,  # undocumented
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        to: float = ...,
+        value: float = ...,
+        variable: tkinter.IntVar | tkinter.DoubleVar = ...,
+    ) -> None: ...
+    @overload  # type: ignore
+    def configure(
+        self,
+        cnf: dict[str, Any] | None = ...,
+        *,
+        command: str | Callable[[str], Any] = ...,
+        cursor: tkinter._Cursor = ...,
+        from_: float = ...,
+        length: tkinter._ScreenUnits = ...,
+        orient: Literal["horizontal", "vertical"] = ...,
+        state: str = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        to: float = ...,
+        value: float = ...,
+        variable: tkinter.IntVar | tkinter.DoubleVar = ...,
+    ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
+    @overload
+    def configure(self, cnf: str) -> tuple[str, str, str, Any, Any]: ...
+    # config must be copy/pasted, otherwise ttk.Scale().config is mypy error (don't know why)
+    @overload  # type: ignore
+    def config(
+        self,
+        cnf: dict[str, Any] | None = ...,
+        *,
+        command: str | Callable[[str], Any] = ...,
+        cursor: tkinter._Cursor = ...,
+        from_: float = ...,
+        length: tkinter._ScreenUnits = ...,
+        orient: Literal["horizontal", "vertical"] = ...,
+        state: str = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        to: float = ...,
+        value: float = ...,
+        variable: tkinter.IntVar | tkinter.DoubleVar = ...,
+    ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
+    @overload
+    def config(self, cnf: str) -> tuple[str, str, str, Any, Any]: ...
+    def get(self, x: Any | None = ..., y: Any | None = ...): ...
+
+class Scrollbar(Widget, tkinter.Scrollbar):
+    def __init__(
+        self,
+        master: tkinter.Misc | None = ...,
+        *,
+        class_: str = ...,
+        command: Callable[..., tuple[float, float] | None] | str = ...,
+        cursor: tkinter._Cursor = ...,
+        name: str = ...,
+        orient: Literal["horizontal", "vertical"] = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+    ) -> None: ...
+    @overload  # type: ignore
+    def configure(
+        self,
+        cnf: dict[str, Any] | None = ...,
+        *,
+        command: Callable[..., tuple[float, float] | None] | str = ...,
+        cursor: tkinter._Cursor = ...,
+        orient: Literal["horizontal", "vertical"] = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+    ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
+    @overload
+    def configure(self, cnf: str) -> tuple[str, str, str, Any, Any]: ...
+    # config must be copy/pasted, otherwise ttk.Scrollbar().config is mypy error (don't know why)
+    @overload  # type: ignore
+    def config(
+        self,
+        cnf: dict[str, Any] | None = ...,
+        *,
+        command: Callable[..., tuple[float, float] | None] | str = ...,
+        cursor: tkinter._Cursor = ...,
+        orient: Literal["horizontal", "vertical"] = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+    ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
+    @overload
+    def config(self, cnf: str) -> tuple[str, str, str, Any, Any]: ...
+
+class Separator(Widget):
+    def __init__(
+        self,
+        master: tkinter.Misc | None = ...,
+        *,
+        class_: str = ...,
+        cursor: tkinter._Cursor = ...,
+        name: str = ...,
+        orient: Literal["horizontal", "vertical"] = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+    ) -> None: ...
+    @overload
+    def configure(
+        self,
+        cnf: dict[str, Any] | None = ...,
+        *,
+        cursor: tkinter._Cursor = ...,
+        orient: Literal["horizontal", "vertical"] = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+    ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
+    @overload
+    def configure(self, cnf: str) -> tuple[str, str, str, Any, Any]: ...
+    config = configure
+
+class Sizegrip(Widget):
+    def __init__(
+        self,
+        master: tkinter.Misc | None = ...,
+        *,
+        class_: str = ...,
+        cursor: tkinter._Cursor = ...,
+        name: str = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+    ) -> None: ...
+    @overload
+    def configure(
+        self,
+        cnf: dict[str, Any] | None = ...,
+        *,
+        cursor: tkinter._Cursor = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+    ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
+    @overload
+    def configure(self, cnf: str) -> tuple[str, str, str, Any, Any]: ...
+    config = configure
+
+if sys.version_info >= (3, 7):
+    class Spinbox(Entry):
+        def __init__(
+            self,
+            master: tkinter.Misc | None = ...,
+            *,
+            background: tkinter._Color = ...,  # undocumented
+            class_: str = ...,
+            command: Callable[[], Any] | str | list[str] | Tuple[str, ...] = ...,
+            cursor: tkinter._Cursor = ...,
+            exportselection: bool = ...,  # undocumented
+            font: _FontDescription = ...,  # undocumented
+            foreground: tkinter._Color = ...,  # undocumented
+            format: str = ...,
+            from_: float = ...,
+            increment: float = ...,
+            invalidcommand: tkinter._EntryValidateCommand = ...,  # undocumented
+            justify: Literal["left", "center", "right"] = ...,  # undocumented
+            name: str = ...,
+            show: Any = ...,  # undocumented
+            state: str = ...,
+            style: str = ...,
+            takefocus: tkinter._TakeFocusValue = ...,
+            textvariable: tkinter.Variable = ...,  # undocumented
+            to: float = ...,
+            validate: Literal["none", "focus", "focusin", "focusout", "key", "all"] = ...,
+            validatecommand: tkinter._EntryValidateCommand = ...,
+            values: list[str] | Tuple[str, ...] = ...,
+            width: int = ...,  # undocumented
+            wrap: bool = ...,
+            xscrollcommand: tkinter._XYScrollCommand = ...,
+        ) -> None: ...
+        @overload  # type: ignore
+        def configure(
+            self,
+            cnf: dict[str, Any] | None = ...,
+            *,
+            background: tkinter._Color = ...,
+            command: Callable[[], Any] | str | list[str] | Tuple[str, ...] = ...,
+            cursor: tkinter._Cursor = ...,
+            exportselection: bool = ...,
+            font: _FontDescription = ...,
+            foreground: tkinter._Color = ...,
+            format: str = ...,
+            from_: float = ...,
+            increment: float = ...,
+            invalidcommand: tkinter._EntryValidateCommand = ...,
+            justify: Literal["left", "center", "right"] = ...,
+            show: Any = ...,
+            state: str = ...,
+            style: str = ...,
+            takefocus: tkinter._TakeFocusValue = ...,
+            textvariable: tkinter.Variable = ...,
+            to: float = ...,
+            validate: Literal["none", "focus", "focusin", "focusout", "key", "all"] = ...,
+            validatecommand: tkinter._EntryValidateCommand = ...,
+            values: list[str] | Tuple[str, ...] = ...,
+            width: int = ...,
+            wrap: bool = ...,
+            xscrollcommand: tkinter._XYScrollCommand = ...,
+        ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
+        @overload
+        def configure(self, cnf: str) -> tuple[str, str, str, Any, Any]: ...
+        config = configure  # type: ignore
+        def set(self, value: Any) -> None: ...
+
+class _TreeviewItemDict(TypedDict):
+    text: str
+    image: list[str] | Literal[""]  # no idea why it's wrapped in list
+    values: list[Any] | Literal[""]
+    open: bool  # actually 0 or 1
+    tags: list[str] | Literal[""]
+
+class _TreeviewTagDict(TypedDict):
+    # There is also 'text' and 'anchor', but they don't seem to do anything, using them is likely a bug
+    foreground: tkinter._Color
+    background: tkinter._Color
+    font: _FontDescription
+    image: Literal[""] | str  # not wrapped in list :D
+
+class _TreeviewHeaderDict(TypedDict):
+    text: str
+    image: list[str]
+    anchor: tkinter._Anchor
+    command: str
+    state: str  # Doesn't seem to appear anywhere else than in these dicts
+
+class _TreeviewColumnDict(TypedDict):
+    width: int
+    minwidth: int
+    stretch: bool  # actually 0 or 1
+    anchor: tkinter._Anchor
+    id: str
+
+_TreeviewColumnId = Union[int, str]  # manual page: "COLUMN IDENTIFIERS"
+
+class Treeview(Widget, tkinter.XView, tkinter.YView):
+    def __init__(
+        self,
+        master: tkinter.Misc | None = ...,
+        *,
+        class_: str = ...,
+        columns: str | list[str] | Tuple[str, ...] = ...,
+        cursor: tkinter._Cursor = ...,
+        displaycolumns: str | list[str] | Tuple[str, ...] | list[int] | Tuple[int, ...] | Literal["#all"] = ...,
+        height: int = ...,
+        name: str = ...,
+        padding: tkinter._Padding = ...,
+        selectmode: Literal["extended", "browse", "none"] = ...,
+        # list/tuple of Literal don't actually work in mypy
+        #
+        # 'tree headings' is same as ['tree', 'headings'], and I wouldn't be
+        # surprised if someone is using it.
+        show: Literal["tree", "headings", "tree headings", ""] | list[str] | Tuple[str, ...] = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        xscrollcommand: tkinter._XYScrollCommand = ...,
+        yscrollcommand: tkinter._XYScrollCommand = ...,
+    ) -> None: ...
+    @overload
+    def configure(
+        self,
+        cnf: dict[str, Any] | None = ...,
+        *,
+        columns: str | list[str] | Tuple[str, ...] = ...,
+        cursor: tkinter._Cursor = ...,
+        displaycolumns: str | list[str] | Tuple[str, ...] | list[int] | Tuple[int, ...] | Literal["#all"] = ...,
+        height: int = ...,
+        padding: tkinter._Padding = ...,
+        selectmode: Literal["extended", "browse", "none"] = ...,
+        show: Literal["tree", "headings", "tree headings", ""] | list[str] | Tuple[str, ...] = ...,
+        style: str = ...,
+        takefocus: tkinter._TakeFocusValue = ...,
+        xscrollcommand: tkinter._XYScrollCommand = ...,
+        yscrollcommand: tkinter._XYScrollCommand = ...,
+    ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ...
+    @overload
+    def configure(self, cnf: str) -> tuple[str, str, str, Any, Any]: ...
+    config = configure
+    def bbox(self, item, column: _TreeviewColumnId | None = ...) -> tuple[int, int, int, int] | Literal[""]: ...  # type: ignore
+    def get_children(self, item: str | None = ...) -> Tuple[str, ...]: ...
+    def set_children(self, item: str, *newchildren: str) -> None: ...
+    @overload
+    def column(self, column: _TreeviewColumnId, option: Literal["width", "minwidth"]) -> int: ...
+    @overload
+    def column(self, column: _TreeviewColumnId, option: Literal["stretch"]) -> bool: ...  # actually 0 or 1
+    @overload
+    def column(self, column: _TreeviewColumnId, option: Literal["anchor"]) -> _tkinter.Tcl_Obj: ...
+    @overload
+    def column(self, column: _TreeviewColumnId, option: Literal["id"]) -> str: ...
+    @overload
+    def column(self, column: _TreeviewColumnId, option: str) -> Any: ...
+    @overload
+    def column(
+        self,
+        column: _TreeviewColumnId,
+        option: None = ...,
+        *,
+        width: int = ...,
+        minwidth: int = ...,
+        stretch: bool = ...,
+        anchor: tkinter._Anchor = ...,
+        # id is read-only
+    ) -> _TreeviewColumnDict | None: ...
+    def delete(self, *items: str) -> None: ...
+    def detach(self, *items: str) -> None: ...
+    def exists(self, item: str) -> bool: ...
+    @overload  # type: ignore
+    def focus(self, item: None = ...) -> str: ...  # can return empty string
+    @overload
+    def focus(self, item: str) -> Literal[""]: ...
+    @overload
+    def heading(self, column: _TreeviewColumnId, option: Literal["text"]) -> str: ...
+    @overload
+    def heading(self, column: _TreeviewColumnId, option: Literal["image"]) -> tuple[str]: ...
+    @overload
+    def heading(self, column: _TreeviewColumnId, option: Literal["anchor"]) -> _tkinter.Tcl_Obj: ...
+    @overload
+    def heading(self, column: _TreeviewColumnId, option: Literal["command"]) -> str: ...
+    @overload
+    def heading(self, column: _TreeviewColumnId, option: str) -> Any: ...
+    @overload
+    def heading(
+        self,
+        column: _TreeviewColumnId,
+        option: None = ...,
+        *,
+        text: str = ...,
+        image: tkinter._ImageSpec = ...,
+        anchor: tkinter._Anchor = ...,
+        command: str | Callable[[], Any] = ...,
+    ) -> _TreeviewHeaderDict | None: ...
+    def identify(self, component, x, y): ...
+    def identify_row(self, y: int) -> str: ...
+    def identify_column(self, x: int) -> str: ...
+    def identify_region(self, x: int, y: int) -> Literal["heading", "separator", "tree", "cell", "nothing"]: ...
+    def identify_element(self, x: int, y: int) -> str: ...  # don't know what possible return values are
+    def index(self, item: str) -> int: ...
+    def insert(
+        self,
+        parent: str,
+        index: int | Literal["end"],
+        iid: str | None = ...,
+        *,
+        id: str = ...,  # same as iid
+        text: str = ...,
+        image: tkinter._ImageSpec = ...,
+        values: list[Any] | Tuple[Any, ...] = ...,
+        open: bool = ...,
+        tags: str | list[str] | Tuple[str, ...] = ...,
+    ) -> str: ...
+    @overload
+    def item(self, item: str, option: Literal["text"]) -> str: ...
+    @overload
+    def item(self, item: str, option: Literal["image"]) -> tuple[str] | Literal[""]: ...
+    @overload
+    def item(self, item: str, option: Literal["values"]) -> Tuple[Any, ...] | Literal[""]: ...
+    @overload
+    def item(self, item: str, option: Literal["open"]) -> bool: ...  # actually 0 or 1
+    @overload
+    def item(self, item: str, option: Literal["tags"]) -> Tuple[str, ...] | Literal[""]: ...
+    @overload
+    def item(self, item: str, option: str) -> Any: ...
+    @overload
+    def item(
+        self,
+        item: str,
+        option: None = ...,
+        *,
+        text: str = ...,
+        image: tkinter._ImageSpec = ...,
+        values: list[Any] | Tuple[Any, ...] | Literal[""] = ...,
+        open: bool = ...,
+        tags: str | list[str] | Tuple[str, ...] = ...,
+    ) -> _TreeviewItemDict | None: ...
+    def move(self, item: str, parent: str, index: int) -> None: ...
+    reattach = move
+    def next(self, item: str) -> str: ...  # returning empty string means last item
+    def parent(self, item: str) -> str: ...
+    def prev(self, item: str) -> str: ...  # returning empty string means first item
+    def see(self, item: str) -> None: ...
+    if sys.version_info >= (3, 8):
+        def selection(self) -> Tuple[str, ...]: ...
+    else:
+        def selection(self, selop: Any | None = ..., items: Any | None = ...) -> Tuple[str, ...]: ...
+    def selection_set(self, items: str | list[str] | Tuple[str, ...]) -> None: ...
+    def selection_add(self, items: str | list[str] | Tuple[str, ...]) -> None: ...
+    def selection_remove(self, items: str | list[str] | Tuple[str, ...]) -> None: ...
+    def selection_toggle(self, items: str | list[str] | Tuple[str, ...]) -> None: ...
+    @overload
+    def set(self, item: str, column: None = ..., value: None = ...) -> dict[str, Any]: ...
+    @overload
+    def set(self, item: str, column: _TreeviewColumnId, value: None = ...) -> Any: ...
+    @overload
+    def set(self, item: str, column: _TreeviewColumnId, value: Any) -> Literal[""]: ...
+    # There's no tag_unbind() or 'add' argument for whatever reason.
+    # Also, it's 'callback' instead of 'func' here.
+    @overload
+    def tag_bind(
+        self, tagname: str, sequence: str | None = ..., callback: Callable[[tkinter.Event[Treeview]], Any] | None = ...
+    ) -> str: ...
+    @overload
+    def tag_bind(self, tagname: str, sequence: str | None, callback: str) -> None: ...
+    @overload
+    def tag_bind(self, tagname: str, *, callback: str) -> None: ...
+    @overload
+    def tag_configure(self, tagname: str, option: Literal["foreground", "background"]) -> tkinter._Color: ...
+    @overload
+    def tag_configure(self, tagname: str, option: Literal["font"]) -> _FontDescription: ...
+    @overload
+    def tag_configure(self, tagname: str, option: Literal["image"]) -> str: ...
+    @overload
+    def tag_configure(
+        self,
+        tagname: str,
+        option: None = ...,
+        *,
+        # There is also 'text' and 'anchor', but they don't seem to do anything, using them is likely a bug
+        foreground: tkinter._Color = ...,
+        background: tkinter._Color = ...,
+        font: _FontDescription = ...,
+        image: tkinter._ImageSpec = ...,
+    ) -> _TreeviewTagDict | Any: ...  # can be None but annoying to check
+    @overload
+    def tag_has(self, tagname: str, item: None = ...) -> Tuple[str, ...]: ...
+    @overload
+    def tag_has(self, tagname: str, item: str) -> bool: ...
+
+class LabeledScale(Frame):
+    label: Any
+    scale: Any
+    # TODO: don't any-type **kw. That goes to Frame.__init__.
+    def __init__(
+        self,
+        master: tkinter.Misc | None = ...,
+        variable: tkinter.IntVar | tkinter.DoubleVar | None = ...,
+        from_: float = ...,
+        to: float = ...,
+        *,
+        compound: Literal["top"] | Literal["bottom"] = ...,
+        **kw: Any,
+    ) -> None: ...
+    # destroy is overridden, signature does not change
+    value: Any
+
+class OptionMenu(Menubutton):
+    def __init__(
+        self,
+        master,
+        variable,
+        default: str | None = ...,
+        *values: str,
+        # rest of these are keyword-only because *args syntax used above
+        style: str = ...,
+        direction: Literal["above"] | Literal["below"] | Literal["left"] | Literal["right"] | Literal["flush"] = ...,
+        command: Callable[[tkinter.StringVar], Any] | None = ...,
+    ) -> None: ...
+    # configure, config, cget, destroy are inherited from Menubutton
+    # destroy and __setitem__ are overridden, signature does not change
+    def set_menu(self, default: Any | None = ..., *values): ...