Как сделать 2 кнопки в одном ряду, если кнопки берутся из массива, telebot
Имеется код со списком городов
city_list = ['? Абакан',
'? Арзамас',
'? Артем',
'? Астрахань',
'? Балашиха',
'? Батайск']
И имеется код который создаёт кнопки:
def city_but():
city_but = ReplyKeyboardMarkup(row_width=2, resize_keyboard=True)
for city in city_list:
city_but.add(
city
)
city_but.add(
"? Главное меню"
)
return city_but
В row_width стоит значение 2,по идее должно быть 2 кнопки в одном ряду, но всё равно каждая кнопка в разных рядах, в чем проблема?
Ответы (1 шт):
Автор решения: Violet
→ Ссылка
- Создайте пустой список -
keys = []для хранения кнопок клавиатуры - В цикле добавляйте в список экземпляр
KeyboardButton - используйте
*keysвcity_but.addдля добавления все созданных экземпляров кнопок
Итоговый код:
@bot.message_handler(commands=['start'])
def main(message):
city_list = ['? Абакан',
'? Арзамас',
'? Артем',
'? Астрахань',
'? Балашиха',
'? Батайск']
city_but = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True)
keys = []
for city in city_list:
keys.append(types.KeyboardButton(city))
city_but.add(*keys,types.KeyboardButton("? Главное меню"))
bot.send_message(message.chat.id, 'Привет!', reply_markup=city_but)