tkinter: Treeview identifiers can be int (#10468)

This commit is contained in:
Bruno Cabral
2023-07-17 13:45:59 -07:00
committed by GitHub
parent 03b4bb9cce
commit 4088b8425f

View File

@@ -953,8 +953,6 @@ class _TreeviewColumnDict(TypedDict):
anchor: tkinter._Anchor
id: str
_TreeviewColumnId: TypeAlias = int | str # manual page: "COLUMN IDENTIFIERS"
class Treeview(Widget, tkinter.XView, tkinter.YView):
def __init__(
self,
@@ -963,7 +961,7 @@ class Treeview(Widget, tkinter.XView, tkinter.YView):
class_: str = ...,
columns: str | list[str] | list[int] | list[str | int] | tuple[str | int, ...] = ...,
cursor: tkinter._Cursor = ...,
displaycolumns: str | list[str] | tuple[str, ...] | list[int] | tuple[int, ...] = ...,
displaycolumns: str | int | list[str] | tuple[str, ...] | list[int] | tuple[int, ...] = ...,
height: int = ...,
name: str = ...,
padding: _Padding = ...,
@@ -985,7 +983,7 @@ class Treeview(Widget, tkinter.XView, tkinter.YView):
*,
columns: str | list[str] | list[int] | list[str | int] | tuple[str | int, ...] = ...,
cursor: tkinter._Cursor = ...,
displaycolumns: str | list[str] | tuple[str, ...] | list[int] | tuple[int, ...] = ...,
displaycolumns: str | int | list[str] | tuple[str, ...] | list[int] | tuple[int, ...] = ...,
height: int = ...,
padding: _Padding = ...,
selectmode: Literal["extended", "browse", "none"] = ...,
@@ -998,23 +996,23 @@ class Treeview(Widget, tkinter.XView, tkinter.YView):
@overload
def configure(self, cnf: str) -> tuple[str, str, str, Any, Any]: ...
config = configure
def bbox(self, item, column: _TreeviewColumnId | None = None) -> tuple[int, int, int, int] | Literal[""]: ... # type: ignore[override]
def get_children(self, item: str | None = None) -> tuple[str, ...]: ...
def set_children(self, item: str, *newchildren: str) -> None: ...
def bbox(self, item: str | int, column: str | int | None = None) -> tuple[int, int, int, int] | Literal[""]: ... # type: ignore[override]
def get_children(self, item: str | int | None = None) -> tuple[str, ...]: ...
def set_children(self, item: str | int, *newchildren: str | int) -> None: ...
@overload
def column(self, column: _TreeviewColumnId, option: Literal["width", "minwidth"]) -> int: ...
def column(self, column: str | int, option: Literal["width", "minwidth"]) -> int: ...
@overload
def column(self, column: _TreeviewColumnId, option: Literal["stretch"]) -> bool: ... # actually 0 or 1
def column(self, column: str | int, option: Literal["stretch"]) -> bool: ... # actually 0 or 1
@overload
def column(self, column: _TreeviewColumnId, option: Literal["anchor"]) -> _tkinter.Tcl_Obj: ...
def column(self, column: str | int, option: Literal["anchor"]) -> _tkinter.Tcl_Obj: ...
@overload
def column(self, column: _TreeviewColumnId, option: Literal["id"]) -> str: ...
def column(self, column: str | int, option: Literal["id"]) -> str: ...
@overload
def column(self, column: _TreeviewColumnId, option: str) -> Any: ...
def column(self, column: str | int, option: str) -> Any: ...
@overload
def column(
self,
column: _TreeviewColumnId,
column: str | int,
option: None = None,
*,
width: int = ...,
@@ -1023,29 +1021,29 @@ class Treeview(Widget, tkinter.XView, tkinter.YView):
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: ...
def delete(self, *items: str | int) -> None: ...
def detach(self, *items: str | int) -> None: ...
def exists(self, item: str | int) -> bool: ...
@overload # type: ignore[override]
def focus(self, item: None = None) -> str: ... # can return empty string
@overload
def focus(self, item: str) -> Literal[""]: ...
def focus(self, item: str | int) -> Literal[""]: ...
@overload
def heading(self, column: _TreeviewColumnId, option: Literal["text"]) -> str: ...
def heading(self, column: str | int, option: Literal["text"]) -> str: ...
@overload
def heading(self, column: _TreeviewColumnId, option: Literal["image"]) -> tuple[str] | str: ...
def heading(self, column: str | int, option: Literal["image"]) -> tuple[str] | str: ...
@overload
def heading(self, column: _TreeviewColumnId, option: Literal["anchor"]) -> _tkinter.Tcl_Obj: ...
def heading(self, column: str | int, option: Literal["anchor"]) -> _tkinter.Tcl_Obj: ...
@overload
def heading(self, column: _TreeviewColumnId, option: Literal["command"]) -> str: ...
def heading(self, column: str | int, option: Literal["command"]) -> str: ...
@overload
def heading(self, column: _TreeviewColumnId, option: str) -> Any: ...
def heading(self, column: str | int, option: str) -> Any: ...
@overload
def heading(self, column: _TreeviewColumnId, option: None = None) -> _TreeviewHeaderDict: ... # type: ignore[misc]
def heading(self, column: str | int, option: None = None) -> _TreeviewHeaderDict: ... # type: ignore[misc]
@overload
def heading(
self,
column: _TreeviewColumnId,
column: str | int,
option: None = None,
*,
text: str = ...,
@@ -1058,14 +1056,14 @@ class Treeview(Widget, tkinter.XView, tkinter.YView):
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 index(self, item: str | int) -> int: ...
def insert(
self,
parent: str,
index: int | Literal["end"],
iid: str | None = None,
iid: str | int | None = None,
*,
id: str = ..., # same as iid
id: str | int = ..., # same as iid
text: str = ...,
image: tkinter._ImageSpec = ...,
values: list[Any] | tuple[Any, ...] = ...,
@@ -1073,23 +1071,23 @@ class Treeview(Widget, tkinter.XView, tkinter.YView):
tags: str | list[str] | tuple[str, ...] = ...,
) -> str: ...
@overload
def item(self, item: str, option: Literal["text"]) -> str: ...
def item(self, item: str | int, option: Literal["text"]) -> str: ...
@overload
def item(self, item: str, option: Literal["image"]) -> tuple[str] | Literal[""]: ...
def item(self, item: str | int, option: Literal["image"]) -> tuple[str] | Literal[""]: ...
@overload
def item(self, item: str, option: Literal["values"]) -> tuple[Any, ...] | Literal[""]: ...
def item(self, item: str | int, option: Literal["values"]) -> tuple[Any, ...] | Literal[""]: ...
@overload
def item(self, item: str, option: Literal["open"]) -> bool: ... # actually 0 or 1
def item(self, item: str | int, option: Literal["open"]) -> bool: ... # actually 0 or 1
@overload
def item(self, item: str, option: Literal["tags"]) -> tuple[str, ...] | Literal[""]: ...
def item(self, item: str | int, option: Literal["tags"]) -> tuple[str, ...] | Literal[""]: ...
@overload
def item(self, item: str, option: str) -> Any: ...
def item(self, item: str | int, option: str) -> Any: ...
@overload
def item(self, item: str, option: None = None) -> _TreeviewItemDict: ... # type: ignore[misc]
def item(self, item: str | int, option: None = None) -> _TreeviewItemDict: ... # type: ignore[misc]
@overload
def item(
self,
item: str,
item: str | int,
option: None = None,
*,
text: str = ...,
@@ -1098,27 +1096,39 @@ class Treeview(Widget, tkinter.XView, tkinter.YView):
open: bool = ...,
tags: str | list[str] | tuple[str, ...] = ...,
) -> None: ...
def move(self, item: str, parent: str, index: int) -> None: ...
def move(self, item: str | int, 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: ...
def next(self, item: str | int) -> str: ... # returning empty string means last item
def parent(self, item: str | int) -> str: ...
def prev(self, item: str | int) -> str: ... # returning empty string means first item
def see(self, item: str | int) -> None: ...
if sys.version_info >= (3, 8):
def selection(self) -> tuple[str, ...]: ...
else:
def selection(self, selop: Incomplete | None = ..., items: Incomplete | None = 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 = None, value: None = None) -> dict[str, Any]: ...
def selection_set(self, __items: list[str] | tuple[str, ...] | list[int] | tuple[int, ...]) -> None: ...
@overload
def set(self, item: str, column: _TreeviewColumnId, value: None = None) -> Any: ...
def selection_set(self, *items: str | int) -> None: ...
@overload
def set(self, item: str, column: _TreeviewColumnId, value: Any) -> Literal[""]: ...
def selection_add(self, __items: list[str] | tuple[str, ...] | list[int] | tuple[int, ...]) -> None: ...
@overload
def selection_add(self, *items: str | int) -> None: ...
@overload
def selection_remove(self, __items: list[str] | tuple[str, ...] | list[int] | tuple[int, ...]) -> None: ...
@overload
def selection_remove(self, *items: str | int) -> None: ...
@overload
def selection_toggle(self, __items: list[str] | tuple[str, ...] | list[int] | tuple[int, ...]) -> None: ...
@overload
def selection_toggle(self, *items: str | int) -> None: ...
@overload
def set(self, item: str | int, column: None = None, value: None = None) -> dict[str, Any]: ...
@overload
def set(self, item: str | int, column: str | int, value: None = None) -> Any: ...
@overload
def set(self, item: str | int, column: str | int, value: Any) -> Literal[""]: ...
# There's no tag_unbind() or 'add' argument for whatever reason.
# Also, it's 'callback' instead of 'func' here.
@overload
@@ -1150,7 +1160,7 @@ class Treeview(Widget, tkinter.XView, tkinter.YView):
@overload
def tag_has(self, tagname: str, item: None = None) -> tuple[str, ...]: ...
@overload
def tag_has(self, tagname: str, item: str) -> bool: ...
def tag_has(self, tagname: str, item: str | int) -> bool: ...
class LabeledScale(Frame):
label: Incomplete