Files
textual/examples/simple.py
Will McGugan e0b9dde563 grab to scroll
2021-07-06 20:16:54 +01:00

52 lines
1.4 KiB
Python

import logging
from logging import FileHandler
from rich.markdown import Markdown
from textual import events
from textual.app import App
from textual.view import DockView
from textual.widgets import Header, Footer, Placeholder, ScrollView
logging.basicConfig(
level="NOTSET",
format="%(message)s",
datefmt="[%X]",
handlers=[FileHandler("richtui.log")],
)
class MyApp(App):
"""An example of a very simple Textual App"""
async def on_load(self, event: events.Load) -> None:
await self.bind("q,ctrl+c", "quit")
await self.bind("b", "view.toggle('sidebar')")
async def on_startup(self, event: events.Startup) -> None:
view = await self.push_view(DockView())
footer = Footer()
footer.add_key("b", "Toggle sidebar")
footer.add_key("q", "Quit")
header = Header(self.title)
body = ScrollView()
sidebar = Placeholder()
await view.dock(header, edge="top")
await view.dock(footer, edge="bottom")
await view.dock(sidebar, edge="left", size=30, name="sidebar")
await view.dock(body, edge="right")
async def get_markdown(filename: str) -> None:
with open(filename, "rt") as fh:
readme = Markdown(fh.read(), hyperlinks=True)
await body.update(readme)
await self.call_later(get_markdown, "richreadme.md")
MyApp.run(title="Simple App")