from textual import on from textual.app import ComposeResult from textual.screen import ModalScreen from textual.widgets import Input, Label, Button from textual.containers import Container class OpenMessageScreen(ModalScreen[int | None]): def compose(self) -> ComposeResult: yield Container( Label("📨", id="message_label"), Input(placeholder="Enter message ID (integer only)", type="integer", id="open_message_input"), Button("Open", variant="primary", id="open_message_button"), id="open_message_container", classes="modal_screen" ) @on(Input.Submitted) def handle_message_id(self) -> None: input_widget = self.query_one("#open_message_input", Input) message_id = int(input_widget.value if input_widget.value else 0) self.dismiss(message_id) @on(Input._on_key) def handle_close(self, event) -> None: if (event.key == "escape" or event.key == "ctrl+c"): self.dismiss()