from textual import on from textual.app import ComposeResult, Screen from textual.widgets import Input, Label, Button from textual.containers import Horizontal class OpenMessageScreen(Screen[int]): def compose(self) -> ComposeResult: yield Horizontal( 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") ) @on(Input.Submitted) def handle_message_id(self) -> None: input_widget = self.query_one("#open_message_input", Input) self.disabled = True self.loading = True message_id = int(input_widget.value) 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()