Files
textual/sandbox/will/screens.py
2022-08-17 08:46:06 +01:00

67 lines
1.7 KiB
Python

from textual.app import App, Screen, ComposeResult
from textual.widgets import Static, Footer, Pretty
class ModalScreen(Screen):
def compose(self) -> ComposeResult:
yield Pretty(self.app.screen_stack)
yield Footer()
def on_screen_resume(self):
self.query_one(Pretty).update(self.app.screen_stack)
class NewScreen(Screen):
def compose(self):
yield Pretty(self.app.screen_stack)
yield Footer()
def on_screen_resume(self):
self.query_one(Pretty).update(self.app.screen_stack)
class ScreenApp(App):
CSS = """
ScreenApp Screen {
background: #111144;
color: white;
}
ScreenApp ModalScreen {
background: #114411;
color: white;
}
ScreenApp Pretty {
height: auto;
content-align: center middle;
background: white 20%;
}
"""
def compose(self) -> ComposeResult:
yield Static("On Screen 1")
yield Footer()
def on_mount(self) -> None:
self.install_screen(NewScreen("Screen1"), name="1")
self.install_screen(NewScreen("Screen2"), name="2")
self.install_screen(NewScreen("Screen3"), name="3")
self.bind("1", "switch_screen('1')", description="Screen 1")
self.bind("2", "switch_screen('2')", description="Screen 2")
self.bind("3", "switch_screen('3')", description="Screen 3")
self.bind("s", "modal_screen", description="add screen")
self.bind("escape", "back", description="Go back")
def action_modal_screen(self) -> None:
self.push_screen(ModalScreen())
app = ScreenApp()
if __name__ == "__main__":
app.run()