首页 > 解决方案 > Telegram 内联键盘的创建功能

问题描述

我需要编写一个创建内联键盘的函数。函数参数是一个整数,例如i

键盘中的按钮数:i + 1。每行按钮的条件数:<=3。

标签: pythonkeyboardtelegraminlinetelegram-bot

解决方案


根据您自己的回答,并且由于您在评论中提到了 aiogram,因此库中已经为您的用例实现了一项功能:

# number_of_buttons_in_row would be 3 in your case
def get_kb(number_of_buttons, number_of_buttons_in_row):
    markup = InlineKeyboardMarkup()    
    markup.row_width = number_of_buttons_in_row     # key part is here

    for i in range(1, number_of_buttons):
        markup.add(InlineKeyboardButton('button ' + str(i ** i), callback_data='button_' + str(i ** i)),
                   InlineKeyboardButton('button ' + str(i ** i + 1), callback_data='button_' + str(i ** i + 1)),
                   InlineKeyboardButton('button ' + str(i ** i + 2), callback_data='button ' + str(i ** i + 2)))

    markup.add(InlineKeyboardButton('others', callback_data='others'))
    markup.add(InlineKeyboardButton('button ' + str(q), callback_data='button ' + str(q)),
               InlineKeyboardButton('others', callback_data='others'))

    markup.add(InlineKeyboardButton('button ' + str(q-1), callback_data='button ' + str(q-1)),
               InlineKeyboardButton('button ' + str(q), callback_data='button ' + str(q)),
               InlineKeyboardButton('others', callback_data='others'))
    return markup

如您所见,有一个名为row_widthinside markup 的字段,用于将按钮切成给定的宽度并将它们放在多行中


推荐阅读