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 itemis_checked
- returns if certain id is currently selectedset_checked
- sets the selected item by id
Classes#
- class aiogram_dialog.widgets.kbd.select.OnItemStateChanged(*args, **kwargs)#
- abstract async __call__(event, select, dialog_manager, data)#
Call self as a function.
- Parameters:
event (CallbackQuery | Message | DialogUpdateEvent | ChatMemberUpdated) –
select (ManagedT) –
dialog_manager (DialogManager) –
data (T) –
- class aiogram_dialog.widgets.kbd.select.OnItemClick(*args, **kwargs)#
- abstract async __call__(event, select, dialog_manager, data)#
Call self as a function.
- Parameters:
event (CallbackQuery) –
select (ManagedT) –
dialog_manager (DialogManager) –
data (T) –
- class aiogram_dialog.widgets.kbd.Radio(checked_text, unchecked_text, id, item_id_getter, items, type_factory=<class 'str'>, on_click=None, on_state_changed=None, when=None)#
- Parameters:
checked_text (Text) –
unchecked_text (Text) –
id (str) –
item_id_getter (Callable[[Any], str | int]) –
items (str | Callable[[Dict], Sequence] | MagicFilter | Sequence) –
type_factory (Callable[[str], T]) –
on_click (OnItemClick[ManagedRadio[T], T] | WidgetEventProcessor | None) –
on_state_changed (OnItemStateChanged[ManagedRadio[T], T] | WidgetEventProcessor | None) –
when (str | Callable) –
- __init__(checked_text, unchecked_text, id, item_id_getter, items, type_factory=<class 'str'>, on_click=None, on_state_changed=None, when=None)#
- Parameters:
checked_text (Text) –
unchecked_text (Text) –
id (str) –
item_id_getter (Callable[[Any], str | int]) –
items (str | Callable[[Dict], Sequence] | MagicFilter | Sequence) –
type_factory (Callable[[str], T]) –
on_click (OnItemClick[ManagedRadio[T], T] | WidgetEventProcessor | None) –
on_state_changed (OnItemStateChanged[ManagedRadio[T], T] | WidgetEventProcessor | None) –
when (str | Callable | None) –
- class aiogram_dialog.widgets.kbd.ManagedRadio(widget, manager)#
- Parameters:
widget (W) –
manager (DialogManager) –
- get_checked()#
Get an id of selected item.
- Return type:
T | None
- is_checked(item_id)#
Get if specified item is checked.
- Parameters:
item_id (T) –
- Return type:
bool
- async set_checked(item_id)#
Get set which item is selected.
- Parameters:
item_id (T) –