from typing import Tuple, Optional, Callable

class Widget:
    def config(self, *, fg: Optional[Tuple[int,int,int]]=None,
                     bg: Optional[Tuple[int,int,int]]=None,
                     font_size: Optional[int]=None,
                     text: Optional[str]=None) -> None: ...
    def show(self) -> None: ...
    def hide(self) -> None: ...
    def lock(self) -> None: ...
    def unlock(self) -> None: ...
    def anim(self, start_x:int, start_y:int, end_x:int, end_y:int, duration_ms:int) -> None: ...

class Window:
    def Label(self, text:str, x:int, y:int) -> Widget: ...
    def Button(self, text:str, x:int, y:int, command: Optional[Callable]=None, args: Optional[tuple]=None) -> Widget: ...
    def run(self) -> None: ...

def create_window(title:str, width:int, height:int, r:int=255, g:int=255, b:int=255) -> Window: ...
