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",
)
../../../_images/radio.png

Useful methods:

  • get_checked - returns an id of selected item

  • is_checked - returns if certain id is currently selected

  • set_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 | ChatJoinRequest) –

  • 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) –