Задать вопрос
Этот вопрос закрыт для ответов, так как повторяет вопрос InlineKeyboardBuilder кол-во кнопок в коде, как задать количество?
@datel

Как создать так сказать «Сложную» клавиатуру с помощью inlinekeyboardbuilder в aiogram?

Вот есть у меня такая желаемая схема:

Товар1 | Товар2
Товар3 | Товар4
Оформить заказ
Назад

Ну это что то вроде примера как должны выглядеть строки. Вот нельзя никак сделать так, чтоб у меня товары создавались по данным из БД и располагались по 2 на одной строке, а кнопки Оформить заказ и Назад подтянулись в конце и были по 1 на одной строке

Вот такой код (это переделка из настоящего кода):

async def create_catalog(tg_id: int):
    check = await *Функция которая проверяет наличие товара и возвращает  список с товарами в наличии()
    basket = await *Функция которая проверяет корзину пользователя и возвращает список с товарами в корзине(tg_id=tg_id)
    kb = InlineKeyboardBuilder()
    if not check:
        kb.add(InlineKeyboardButton(text='⚠️ В настоящее время наш магазин пуст', callback_data='none'))
    else:
        for i in check:
            quantity_products = 0
            
            for b in basket: 
                if b == i: 
                    quantity_products += 1
                    
            if quantity_products == 0:
                kb.add(InlineKeyboardButton(text=f'{i.category} - {i.price}₽', callback_data=f'{i.category}'))
            else:
                kb.add(InlineKeyboardButton(text=f'{i.category} - {i.price}₽ [{quantity_products}]', callback_data=f'{i.category}'))
        kb.adjust(2)
        kb.add(InlineKeyboardButton(text=' Оформить заказ', callback_data='buy'))
    kb.add(InlineKeyboardButton(text='↩️ Назад', callback_data='go_menu'))
    kb.adjust(1)
    return kb.as_markup()


kb.adjuct() задаёт ширину для всей клавиатуры а не для отрезка какого то, а для всей клавиатуры

А если поставить kb.adjuct() ПЕРЕД добавлением кнопок, то первая кнопка будет одна на одной строчке, а остальные по 3 на одной
  • Вопрос задан
  • 41 просмотр
Подписаться 1 Простой
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы