summaryrefslogtreecommitdiffstats
path: root/examples/layout.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/layout.py')
-rw-r--r--examples/layout.py57
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