python - Telegram 内联键盘的创建功能
问题描述
我需要编写一个创建内联键盘的函数。函数参数是一个整数,例如i。
键盘中的按钮数:i + 1。每行按钮的条件数:<=3。
解决方案
根据您自己的回答,并且由于您在评论中提到了 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_width
inside markup 的字段,用于将按钮切成给定的宽度并将它们放在多行中
推荐阅读
- algorithm - 在 Scala 中查找和替换不可变集合中的元素的最佳方法是什么?
- python - IPython复制所有csv文件
- sql - 分页自定义查询获取前 N 行错误
- python - 使用 boto3 连接到 S3 兼容存储
- powershell - PowerShell GUI / Windows 窗体导致脚本冻结
- python - 无法找到复选框 Selenium
- sql - 如何有效地将 + 1 与具有数字部分的 Varchar 值相加?
- sql - 为什么在我的查询中没有使用 Pivot Clause 的订单?
- jsf - 单击每个 p:commandButton 时出现 IllegalArgumenException
- azure - 具有动态路径的 ADL 之间的 Azure 数据工厂复制