Skip to content

Commit 58032a7

Browse files
CraftSpiderAkuli
andauthored
Add missing tkinter submodules (#4558)
Co-authored-by: Akuli <[email protected]>
1 parent 6aa5cc6 commit 58032a7

File tree

10 files changed

+388
-17
lines changed

10 files changed

+388
-17
lines changed

stdlib/2and3/_typeshed/tkinter.pyi

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import sys
2+
from typing import Optional, Protocol
3+
4+
if sys.version_info >= (3,):
5+
from tkinter import Event, Misc, Widget
6+
class DndSource(Protocol):
7+
def dnd_end(self, target: Optional[Widget], event: Optional[Event[Misc]]) -> None: ...

stdlib/3/_tkinter.pyi

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from typing import Any, Tuple, Union
2+
from typing_extensions import Literal
23

34
# _tkinter is meant to be only used internally by tkinter, but some tkinter
45
# functions e.g. return _tkinter.Tcl_Obj objects. Tcl_Obj represents a Tcl
@@ -71,16 +72,17 @@ class TkappType:
7172
wantobjects: Any
7273
willdispatch: Any
7374

74-
ALL_EVENTS: int
75-
FILE_EVENTS: int
76-
IDLE_EVENTS: int
77-
TIMER_EVENTS: int
78-
WINDOW_EVENTS: int
75+
# These should be kept in sync with tkinter.tix constants, except ALL_EVENTS which doesn't match TCL_ALL_EVENTS
76+
ALL_EVENTS: Literal[-3]
77+
FILE_EVENTS: Literal[8]
78+
IDLE_EVENTS: Literal[32]
79+
TIMER_EVENTS: Literal[16]
80+
WINDOW_EVENTS: Literal[4]
7981

80-
DONT_WAIT: int
81-
EXCEPTION: int
82-
READABLE: int
83-
WRITABLE: int
82+
DONT_WAIT: Literal[2]
83+
EXCEPTION: Literal[8]
84+
READABLE: Literal[2]
85+
WRITABLE: Literal[4]
8486

8587
TCL_VERSION: str
8688
TK_VERSION: str

stdlib/3/tkinter/colorchooser.pyi

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from tkinter.commondialog import Dialog
2+
from typing import Any, ClassVar, Optional, Tuple, Union
3+
4+
class Chooser(Dialog):
5+
command: ClassVar[str]
6+
7+
def askcolor(
8+
color: Optional[Union[str, bytes]] = ..., **options: Any
9+
) -> Union[Tuple[None, None], Tuple[Tuple[float, float, float], str]]: ...

stdlib/3/tkinter/commondialog.pyi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from typing import Any, Mapping, Optional
1+
from typing import Any, ClassVar, Mapping, Optional
22

33
class Dialog:
4-
command: Optional[Any] = ...
4+
command: ClassVar[Optional[str]] = ...
55
master: Optional[Any] = ...
66
options: Mapping[str, Any] = ...
77
def __init__(self, master: Optional[Any] = ..., **options) -> None: ...

stdlib/3/tkinter/dnd.pyi

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from _typeshed.tkinter import DndSource
2+
from tkinter import Event, Misc, Tk
3+
from typing import ClassVar, Optional
4+
5+
class DndHandler:
6+
root: ClassVar[Optional[Tk]]
7+
def __init__(self, source: DndSource, event: Event[Misc]) -> None: ...
8+
def cancel(self, event: Optional[Event[Misc]] = ...) -> None: ...
9+
def finish(self, event: Optional[Event[Misc]], commit: int = ...) -> None: ...
10+
def on_motion(self, event: Event[Misc]) -> None: ...
11+
def on_release(self, event: Event[Misc]) -> None: ...
12+
13+
def dnd_start(source, event) -> Optional[DndHandler]: ...

stdlib/3/tkinter/filedialog.pyi

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from tkinter import Button, Entry, Frame, Listbox, Scrollbar, Toplevel, commondialog
2-
from typing import Any, Dict, Optional, Tuple
2+
from typing import Any, ClassVar, Dict, Optional, Tuple
33

44
dialogstates: Dict[Any, Tuple[Any, Any]]
55

@@ -49,13 +49,13 @@ class SaveFileDialog(FileDialog):
4949
class _Dialog(commondialog.Dialog): ...
5050

5151
class Open(_Dialog):
52-
command: str = ...
52+
command: ClassVar[str] = ...
5353

5454
class SaveAs(_Dialog):
55-
command: str = ...
55+
command: ClassVar[str] = ...
5656

5757
class Directory(commondialog.Dialog):
58-
command: str = ...
58+
command: ClassVar[str] = ...
5959

6060
def askopenfilename(**options): ...
6161
def asksaveasfilename(**options): ...

stdlib/3/tkinter/messagebox.pyi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from tkinter.commondialog import Dialog
2-
from typing import Any, Optional
2+
from typing import Any, ClassVar, Optional
33

44
ERROR: str
55
INFO: str
@@ -19,7 +19,7 @@ YES: str
1919
NO: str
2020

2121
class Message(Dialog):
22-
command: str = ...
22+
command: ClassVar[str] = ...
2323

2424
def showinfo(title: Optional[str] = ..., message: Optional[str] = ..., **options: Any) -> str: ...
2525
def showwarning(title: Optional[str] = ..., message: Optional[str] = ..., **options: Any) -> str: ...

stdlib/3/tkinter/scrolledtext.pyi

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from tkinter import Frame, Grid, Misc, Pack, Place, Scrollbar, Text
2+
from typing import Any, Optional
3+
4+
# The methods from Pack, Place, and Grid are dynamically added over the parent's impls
5+
class ScrolledText(Text):
6+
frame: Frame
7+
vbar: Scrollbar
8+
def __init__(self, master: Optional[Misc] = ..., **kwargs: Any) -> None: ...

stdlib/3/tkinter/simpledialog.pyi

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from tkinter import Event, Misc, Toplevel
2+
from typing import Any, List, Optional
3+
4+
class Dialog(Toplevel):
5+
def __init__(self, parent: Optional[Misc], title: Optional[str] = ...) -> None: ...
6+
def body(self, master) -> None: ...
7+
def buttonbox(self): ...
8+
9+
class SimpleDialog:
10+
def __init__(
11+
self,
12+
master: Optional[Misc],
13+
text: str = ...,
14+
buttons: List[str] = ...,
15+
default: Optional[int] = ...,
16+
cancel: Optional[int] = ...,
17+
title: Optional[str] = ...,
18+
class_: Optional[str] = ...,
19+
) -> None: ...
20+
def go(self) -> Optional[int]: ...
21+
def return_event(self, event: Event[Misc]) -> None: ...
22+
def wm_delete_window(self) -> None: ...
23+
def done(self, num: int) -> None: ...
24+
25+
def askfloat(title: Optional[str], prompt: str, **kwargs: Any) -> float: ...
26+
def askinteger(title: Optional[str], prompt: str, **kwargs: Any) -> int: ...
27+
def askstring(title: Optional[str], prompt: str, **kwargs: Any) -> str: ...

0 commit comments

Comments
 (0)