mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
Make a start on the SelectionList example apps
This commit is contained in:
10
docs/examples/widgets/selection_list.css
Normal file
10
docs/examples/widgets/selection_list.css
Normal file
@@ -0,0 +1,10 @@
|
||||
Screen {
|
||||
align: center middle;
|
||||
}
|
||||
|
||||
SelectionList {
|
||||
padding: 1;
|
||||
border: solid $accent;
|
||||
width: 80%;
|
||||
height: 80%;
|
||||
}
|
||||
28
docs/examples/widgets/selection_list.py
Normal file
28
docs/examples/widgets/selection_list.py
Normal file
@@ -0,0 +1,28 @@
|
||||
from textual.app import App, ComposeResult
|
||||
from textual.widgets import Footer, Header, SelectionList
|
||||
|
||||
|
||||
class SelectionListApp(App[None]):
|
||||
CSS_PATH = "selection_list.css"
|
||||
|
||||
def compose(self) -> ComposeResult:
|
||||
yield Header()
|
||||
yield SelectionList[int](
|
||||
("Falken's Maze", 0, True),
|
||||
("Black Jack", 1),
|
||||
("Gin Rummy", 2),
|
||||
("Hearts", 3),
|
||||
("Bridge", 4),
|
||||
("Checkers", 5),
|
||||
("Chess", 6, True),
|
||||
("Poker", 7),
|
||||
("Fighter Combat", 8, True),
|
||||
)
|
||||
yield Footer()
|
||||
|
||||
def on_mount(self) -> None:
|
||||
self.query_one(SelectionList).border_title = "Shall we play some games?"
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
SelectionListApp().run()
|
||||
29
docs/examples/widgets/selection_list_selections.py
Normal file
29
docs/examples/widgets/selection_list_selections.py
Normal file
@@ -0,0 +1,29 @@
|
||||
from textual.app import App, ComposeResult
|
||||
from textual.widgets import Footer, Header, SelectionList
|
||||
from textual.widgets.selection_list import Selection
|
||||
|
||||
|
||||
class SelectionListApp(App[None]):
|
||||
CSS_PATH = "selection_list.css"
|
||||
|
||||
def compose(self) -> ComposeResult:
|
||||
yield Header()
|
||||
yield SelectionList[int](
|
||||
Selection("Falken's Maze", 0, True),
|
||||
Selection("Black Jack", 1),
|
||||
Selection("Gin Rummy", 2),
|
||||
Selection("Hearts", 3),
|
||||
Selection("Bridge", 4),
|
||||
Selection("Checkers", 5),
|
||||
Selection("Chess", 6, True),
|
||||
Selection("Poker", 7),
|
||||
Selection("Fighter Combat", 8, True),
|
||||
)
|
||||
yield Footer()
|
||||
|
||||
def on_mount(self) -> None:
|
||||
self.query_one(SelectionList).border_title = "Shall we play some games?"
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
SelectionListApp().run()
|
||||
@@ -9,7 +9,53 @@ A widget for showing a vertical list check boxes.
|
||||
|
||||
## Examples
|
||||
|
||||
Some super-cool examples will appear here!
|
||||
A selection list is designed to be built up of single-line prompts (which
|
||||
can be Rich renderables) and an associated unique value.
|
||||
|
||||
### Selections as tuples
|
||||
|
||||
A selection list can be built with tuples, either of two or three values in
|
||||
length. Each tuple must contain a prompt and a value, and it can also
|
||||
optionally contain a flag for the initial selected state of the option.
|
||||
|
||||
=== "Output"
|
||||
|
||||
```{.textual path="docs/examples/widgets/selection_list.py"}
|
||||
```
|
||||
|
||||
=== "selection_list.py"
|
||||
|
||||
~~~python
|
||||
--8<-- "docs/examples/widgets/selection_list.py"
|
||||
~~~
|
||||
|
||||
=== "selection_list.css"
|
||||
|
||||
~~~python
|
||||
--8<-- "docs/examples/widgets/selection_list.css"
|
||||
~~~
|
||||
|
||||
### Selections as Selection objects
|
||||
|
||||
Alternatively, selections can be passed in as
|
||||
[`Selection`][textual.widgets.selection_list.Selection]s:
|
||||
|
||||
=== "Output"
|
||||
|
||||
```{.textual path="docs/examples/widgets/selection_list_selections.py"}
|
||||
```
|
||||
|
||||
=== "selection_list_selections.py"
|
||||
|
||||
~~~python
|
||||
--8<-- "docs/examples/widgets/selection_list_selections.py"
|
||||
~~~
|
||||
|
||||
=== "selection_list.css"
|
||||
|
||||
~~~python
|
||||
--8<-- "docs/examples/widgets/selection_list.css"
|
||||
~~~
|
||||
|
||||
## Reactive Attributes
|
||||
|
||||
|
||||
Reference in New Issue
Block a user