diff options
Diffstat (limited to 'examples/layout.py')
-rw-r--r-- | examples/layout.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/examples/layout.py b/examples/layout.py new file mode 100644 index 0000000..046476b --- /dev/null +++ b/examples/layout.py @@ -0,0 +1,57 @@ +""" + +Demonstrates a dynamic Layout + +""" + +from datetime import datetime + +from time import sleep + +from rich.align import Align +from rich.console import Console +from rich.layout import Layout +from rich.live import Live +from rich.text import Text + +console = Console() +layout = Layout() + +layout.split( + Layout(name="header", size=1), + Layout(ratio=1, name="main"), + Layout(size=10, name="footer"), +) + +layout["main"].split( + Layout(name="side"), Layout(name="body", ratio=2), direction="horizontal" +) + +layout["side"].split(Layout(), Layout()) + +layout["body"].update( + Align.center( + Text( + """This is a demonstration of rich.Layout\n\nHit Ctrl+C to exit""", + justify="center", + ), + vertical="middle", + ) +) + + +class Clock: + """Renders the time in the center of the screen.""" + + def __rich__(self) -> Text: + return Text(datetime.now().ctime(), style="bold magenta", justify="center") + + +layout["header"].update(Clock()) + +with Live(layout, screen=True) as live: + try: + while True: + sleep(1) + except KeyboardInterrupt: + pass |