Как сделать вывод инлайн кнопок в случайном порядке(в три ряда) Телеграм бот Python Aiogram
Я делаю телеграм бота на питоне, и мне нужно вывести инлайн кнопки в случайном порядке, что я и сделал, НО никак не могу сделать чтобы они распологались в три ряда по три кнопки(3*3). Подскажите пожалуйста как это реализовать
list_buts = [("?1", "field_1"), ("?2", "field_2"), ("?3", "field_3"),
("?4", "field_4"), ("?5", "field_5"), ("?6", "field_6"),
("?7", "field_7"), ("?8", "field_8"), ("?9", "field_9")]
random.shuffle(list_buts)
markup = types.InlineKeyboardMarkup(row_width=3)
for text, data in list_buts:
markup.add(types.InlineKeyboardButton(text=text, callback_data=data))
await call.message.answer("Случайный порядок в три ряда?", reply_markup=markup)
Ответы (2 шт):
Автор решения: oleksandrigo
→ Ссылка
Юзайте insert вместо add
for text, data in list_buts:
markup.insert(types.InlineKeyboardButton(text=text, callback_data=data))
Автор решения: Leo Solo
→ Ссылка
Используйте свойство row_width (кол-во колонок), как показано ниже.
def buy_menu(is_url=True, url='', bill=''):
qiwi_menu = InlineKeyboardMarkup(row_width=1)
if is_url:
btn_url_qiwi = InlineKeyboardButton('?Оплатить', url=url)
qiwi_menu.insert(btn_url_qiwi)
btn_check_qiwi = InlineKeyboardButton('✔️Проверить оплату', callback_data='check_'+bill)
qiwi_menu.insert(btn_check_qiwi)
btn_cancel_qiwi = InlineKeyboardButton('?Отмена', callback_data='cancel')
qiwi_menu.insert(btn_cancel_qiwi)
return qiwi_menu
