Files
textual/examples/dev_sandbox.py
2022-02-15 14:09:11 +00:00

63 lines
1.8 KiB
Python

from rich.console import RenderableType
from rich.panel import Panel
from textual import events
from textual.app import App
from textual.renderables._tab_headers import Tab
from textual.widget import Widget
from textual.widgets.tabs import Tabs
class PanelWidget(Widget):
def render(self) -> RenderableType:
return Panel("hello world!", title="Title")
class BasicApp(App):
"""Sandbox application used for testing/development by Textual developers"""
def on_load(self):
"""Bind keys here."""
self.bind("tab", "toggle_class('#sidebar', '-active')")
self.bind("a", "toggle_class('#header', '-visible')")
self.bind("c", "toggle_class('#content', '-content-visible')")
self.bind("d", "toggle_class('#footer', 'dim')")
def on_key(self, event: events.Key) -> None:
tab_keys = {
"1": "one",
"2": "two",
"3": "three",
"4": "four",
"5": "five",
"6": "six",
"7": "seven",
"8": "eight",
}
self.tabs.active_tab_name = tab_keys.get(event.key, "one")
def on_mount(self):
self.tabs = Tabs(
[
Tab("One", name="one"),
Tab("Two", name="two"),
Tab("Three", name="three"),
Tab("Four", name="four"),
Tab("Five", name="five"),
Tab("Six", name="six"),
Tab("Seven", name="seven"),
Tab("Eight", name="eight"),
],
)
self.tabs.active_tab_name = "one"
"""Build layout here."""
self.mount(
header=self.tabs,
content=PanelWidget(),
footer=Widget(),
sidebar=Widget(),
)
BasicApp.run(css_file="dev_sandbox.scss", watch_css=True, log="textual.log")