Radio#
Radio is stateful version of select widget. It marks each clicked item as checked deselecting others. It stores which item is selected so it can be accessed later
Unlike for the Select
you need two texts. First one is used to render checked item, second one is for unchecked. Passed data is the same as for Select
Unlike in normal buttons and window they are used to render an item, but not the window data itself.
Also you can provide on_state_changed
callback function. It will be called when selected item is changed.
import operator
from aiogram_dialog.widgets.kbd import Radio
from aiogram_dialog.widgets.text import Format
# let's assume this is our window data getter
async def get_data(**kwargs):
fruits = [
("Apple", '1'),
("Pear", '2'),
("Orange", '3'),
("Banana", '4'),
]
return {
"fruits": fruits,
"count": len(fruits),
}
fruits_kbd = Radio(
Format("🔘 {item[0]}"), # E.g `🔘 Apple`
Format("⚪️ {item[0]}"),
id="r_fruits",
item_id_getter=operator.itemgetter(1),
items="fruits",
)
Useful methods:
get_checked
- returns an id of selected itemsis_checked
- returns if certain id is currently selectedset_checked
- sets the selected item by id