Как сделать вывод инлайн кнопок в случайном порядке(в три ряда) Телеграм бот Python Aiogram

Рейтинг: 0Ответов: 2Опубликовано: 14.01.2023

Я делаю телеграм бота на питоне, и мне нужно вывести инлайн кнопки в случайном порядке, что я и сделал, НО никак не могу сделать чтобы они распологались в три ряда по три кнопки(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)

Вот что даный код выводит

Ответы

▲ 1Принят

Юзайте insert вместо add

for text, data in list_buts:
   markup.insert(types.InlineKeyboardButton(text=text, callback_data=data))
▲ 0

Используйте свойство 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