-
Notifications
You must be signed in to change notification settings - Fork 767
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* overlay rule * select WIP * select control, made binding description optional * changelog * style tweak * Added constrain * changelog * test fix * drop markup, tidy * tidy * select namespace * tests * docs * Added changed event * changelog * expanded * tests and snapshits * examples and docs * simplify * update reactive attributes * type fix * docstrings * allow renderables * superfluous init * typing fix * optimization * revert optimizations * fixed words * changelog * docstrings * don't need this * changelog * comment * Update docs/widgets/select.md Co-authored-by: Dave Pearson <davep@davep.org> * review changes * review updates --------- Co-authored-by: Dave Pearson <davep@davep.org>
- Loading branch information
1 parent
c2a19bd
commit 7db7139
Showing
32 changed files
with
3,728 additions
and
2,561 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
Screen { | ||
align: center top; | ||
} | ||
|
||
Select { | ||
width: 60; | ||
margin: 2; | ||
} | ||
Input { | ||
width: 60; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
from textual import on | ||
from textual.app import App, ComposeResult | ||
from textual.widgets import Header, Select | ||
|
||
LINES = """I must not fear. | ||
Fear is the mind-killer. | ||
Fear is the little-death that brings total obliteration. | ||
I will face my fear. | ||
I will permit it to pass over me and through me.""".splitlines() | ||
|
||
|
||
class SelectApp(App): | ||
CSS_PATH = "select.css" | ||
|
||
def compose(self) -> ComposeResult: | ||
yield Header() | ||
yield Select((line, line) for line in LINES) | ||
|
||
@on(Select.Changed) | ||
def select_changed(self, event: Select.Changed) -> None: | ||
self.title = str(event.value) | ||
|
||
|
||
if __name__ == "__main__": | ||
app = SelectApp() | ||
app.run() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
# Select | ||
|
||
!!! tip "Added in version 0.24.0" | ||
|
||
A Select widget is a compact control to allow the user to select between a number of possible options. | ||
|
||
|
||
- [X] Focusable | ||
- [ ] Container | ||
|
||
|
||
The options in a select control may be passed in to the constructor or set later with [set_options][textual.widgets.Select.set_options]. | ||
Options should be given as a sequence of tuples consisting of two values: the first is the string (or [Rich Renderable](https://rich.readthedocs.io/en/latest/protocol.html)) to display in the control and list of options, the second is the value of option. | ||
|
||
The value of the currently selected option is stored in the `value` attribute of the widget, and the `value` attribute of the [Changed][textual.widgets.Select.Changed] message. | ||
|
||
|
||
## Typing | ||
|
||
The `Select` control is a typing Generic which allows you to set the type of the option values. | ||
For instance, if the data type for your values is an integer, you would type the widget as follows: | ||
|
||
```python | ||
options = [("First", 1), ("Second", 2)] | ||
my_select: Select[int] = Select(options) | ||
``` | ||
|
||
!!! note | ||
|
||
Typing is entirely optional. | ||
|
||
If you aren't familiar with typing or don't want to worry about it right now, feel free to ignore it. | ||
|
||
## Example | ||
|
||
The following example presents a `Select` with a number of options. | ||
|
||
=== "Output" | ||
|
||
```{.textual path="docs/examples/widgets/select_widget.py"} | ||
``` | ||
|
||
=== "Output (expanded)" | ||
|
||
```{.textual path="docs/examples/widgets/select_widget.py" press="tab,enter,down,down"} | ||
``` | ||
|
||
|
||
=== "select_widget.py" | ||
|
||
```python | ||
--8<-- "docs/examples/widgets/select_widget.py" | ||
``` | ||
|
||
=== "select.css" | ||
|
||
```sass | ||
--8<-- "docs/examples/widgets/select.css" | ||
``` | ||
|
||
## Messages | ||
|
||
- [Select.Changed][textual.widgets.Select.Changed] | ||
|
||
|
||
## Reactive attributes | ||
|
||
|
||
| Name | Type | Default | Description | | ||
| ---------- | -------------------- | ------- | ----------------------------------- | | ||
| `expanded` | `bool` | `False` | True to expand the options overlay. | | ||
| `value` | `SelectType \| None` | `None` | Current value of the Select. | | ||
|
||
|
||
## Bindings | ||
|
||
The Select widget defines the following bindings: | ||
|
||
::: textual.widgets.Select.BINDINGS | ||
options: | ||
show_root_heading: false | ||
show_root_toc_entry: false | ||
|
||
|
||
--- | ||
|
||
|
||
::: textual.widgets.Select | ||
options: | ||
heading_level: 2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.