@Psoriaz

Как запихать список кнопок в один ряд Inline клавиатуры?

Мне нужно сгенерировать список кнопок, а потом запихать его в один ряд Inline клавиатуры, чтобы, допустим в каждом ряду было по 5 кнопок. Как мне это сделать? У меня есть код:
@bot.message_handler(commands=['start'])
def start(message):
    markup = types.InlineKeyboardMarkup()
    buttons = []
    for i in range(-12, 15):
        if i < 0:
            button = types.InlineKeyboardButton(f'{i}', callback_data=f'{i}')
        elif i == 0:
            button = types.InlineKeyboardButton(f'±{i}', callback_data=f'{i}')
        else:
            button = types.InlineKeyboardButton(f'+{i}', callback_data=f'{i}')
        buttons.append(button)
        if len(buttons) == 5:
            # тут нужно добавить массив кнопок
 
    bot.send_message(message.chat.id, f'Здравствуйте, <b>{message.from_user.first_name}</b>. Для начала необходимо настроить часовой пояс. Выберите разницу во времени относительно UTC (Москва: "+3", Владивосток: "+10", Исландия: "+1")', parse_mode='html', reply_markup=markup)
  • Вопрос задан
  • 533 просмотра
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Во-первых, добавить лимит для кнопок в ряду
markup = types.InlineKeyboardMarkup(row_width=5)

Затем просто добавлять кнопки, они сами разобьются по рядам как им нужно.
buttons = []
for i in range(-12, 15):
    if i < 0:
        button = types.InlineKeyboardButton(f'{i}', callback_data=f'{i}')
    elif i == 0:
        button = types.InlineKeyboardButton(f'±{i}', callback_data=f'{i}')
    else:
        button = types.InlineKeyboardButton(f'+{i}', callback_data=f'{i}')
    buttons.append(button)

markup.add(*buttons)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы