Задать вопрос
@EgorKh1

Python телеграм бот telebot. Как циклично заполнить ReplyKeyboardMarkup из списка чтобы кнопки были горизонтально?

Пишу python телеграм бота telebot и не могу разобраться с цикличным заполнением ReplyKeyboardMarkup из списка.
list1 = ['а1', 'b2', 'c3']
он может меняться и содержанием и количеством элементов
если написать цикл for
for button in list1:
     markup.row(types.KeyboardButton(button))

то они становятся вертикально
markup.add(types.KeyboardButton(button)) работает в этом цикле точно так же
результат получается такой:
635bcd6c41ab9411648725.png
а нужно чтобы они становились горизонтально
635bd1be4ebf1728815419.png
пока что добиваюсь этого вот таким кодом:
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
if len(list1) == 1:
     markup.row(list1[0])
if len(list1) == 2:
     markup.row(list1[0], list1[1])
if len(list1) == 3:
    markup.row(list1[0], list1[1], list1[2])

и т д
он занимает много места и количество кнопок ограниченно
циклом у меня никак не получается заполнить горизонтально
перечитал документацию и аналогичные вопросы по кнопкам, но ничего не нашёл..
перепробовал разные способы и убил на это кучу времени но нормального решения так и не нашёл
  • Вопрос задан
  • 704 просмотра
Подписаться 1 Средний 2 комментария
Решения вопроса 1
drygdryg
@drygdryg
Python-разработчик
Вместо
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
if len(list1) == 1:
     markup.row(list1[0])
if len(list1) == 2:
     markup.row(list1[0], list1[1])
if len(list1) == 3:
    markup.row(list1[0], list1[1], list1[2])

используйте
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
markup.row(*list1)


Подробнее про распаковку списков и применение символа * в Python можете прочитать здесь.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы