Как сделать вывод инлайн кнопок в случайном порядке(в три ряда) Телеграм бот 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
→ Ссылка