File: set_reactive03.py

package info (click to toggle)
textual 2.1.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 55,084 kB
  • sloc: python: 85,423; lisp: 1,669; makefile: 101
file content (21 lines) | stat: -rw-r--r-- 609 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from textual.app import App, ComposeResult
from textual.reactive import reactive
from textual.widgets import Input, Label


class MultiGreet(App):
    names: reactive[list[str]] = reactive(list, recompose=True)  # (1)!

    def compose(self) -> ComposeResult:
        yield Input(placeholder="Give me a name")
        for name in self.names:
            yield Label(f"Hello, {name}")

    def on_input_submitted(self, event: Input.Changed) -> None:
        self.names.append(event.value)
        self.mutate_reactive(MultiGreet.names)  # (2)!


if __name__ == "__main__":
    app = MultiGreet()
    app.run()