-
Notifications
You must be signed in to change notification settings - Fork 829
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add an example of using a RadioSet.Changed message (#1935)
Unlike a few other widgets, the RadioSet is pretty much all about reacting to the selection result; the question of how you go about it has already come up and while the message is documented, complete with all properties, it can't hurt to have an illustrative example of code that uses it. Here I add an extra RadioSet example that sits with the message in the reference. This should help the reader better follow how to use it, and also gives something to link to if someone hasn't got that far into the documentation yet but is attempting to use the RadioSet.
- Loading branch information
Showing
3 changed files
with
74 additions
and
0 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
Vertical { | ||
align: center middle; | ||
} | ||
|
||
Horizontal { | ||
align: center middle; | ||
height: auto; | ||
} | ||
|
||
RadioSet { | ||
width: 45%; | ||
} |
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,43 @@ | ||
from textual.app import App, ComposeResult | ||
from textual.containers import Horizontal, Vertical | ||
from textual.widgets import Label, RadioButton, RadioSet | ||
|
||
|
||
class RadioSetChangedApp(App[None]): | ||
CSS_PATH = "radio_set_changed.css" | ||
|
||
def compose(self) -> ComposeResult: | ||
with Vertical(): | ||
with Horizontal(): | ||
with RadioSet(): | ||
yield RadioButton("Battlestar Galactica") | ||
yield RadioButton("Dune 1984") | ||
yield RadioButton("Dune 2021") | ||
yield RadioButton("Serenity", value=True) | ||
yield RadioButton("Star Trek: The Motion Picture") | ||
yield RadioButton("Star Wars: A New Hope") | ||
yield RadioButton("The Last Starfighter") | ||
yield RadioButton( | ||
"Total Recall :backhand_index_pointing_right: :red_circle:", | ||
id="focus_me", | ||
) | ||
yield RadioButton("Wing Commander") | ||
with Horizontal(): | ||
yield Label(id="pressed") | ||
with Horizontal(): | ||
yield Label(id="index") | ||
|
||
def on_mount(self) -> None: | ||
self.query_one("#focus_me", RadioButton).focus() | ||
|
||
def on_radio_set_changed(self, event: RadioSet.Changed) -> None: | ||
self.query_one("#pressed", Label).update( | ||
f"Pressed button label: {event.pressed.label}" | ||
) | ||
self.query_one("#index", Label).update( | ||
f"Pressed button index: {event.input.pressed_index}" | ||
) | ||
|
||
|
||
if __name__ == "__main__": | ||
RadioSetChangedApp().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