Вот есть у меня такая желаемая схема:
Товар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 на одной