在 Python 中动态构建 InlineKeyboardButton
Constructing InlineKeyboardButton Dynamically in Python
我想为 python 中的 Telegram 创建一个 InlineKeyboardButton,就像下面的函数一样,但我想动态地进行。此函数将两个按钮组合在一行中,并将一个按钮添加到第二行。我想每行做两个按钮。
def options(bot, update):
keyboard = [[InlineKeyboardButton("Option 1", callback_data='1'),
InlineKeyboardButton("Option 2", callback_data='2')],
[InlineKeyboardButton("Option 3", callback_data='3')]]
reply_markup = InlineKeyboardMarkup(keyboard)
update.message.reply_text('Please choose:', reply_markup = reply_markup)
但是无论我尝试什么,我都会收到类似
的错误消息
data['inline_keyboard'].append([x.to_dict() for x in inline_keyboard])
AttributeError: 'list' object has no attribute 'to_dict'
我的代码如下:
def create_options(self, gid, Events):
opts = []
o = []
keyboard = []
for i, events in enumerate(Events):
if (events.gid == gid):
o.append([[InlineKeyboardButton(events.etkinlik + u" ", callback_data=i),InlineKeyboardButton(events.etkinlik + u" ", callback_data=i)]])
opts.append(o)
keyboard.append(opts)
return InlineKeyboardMarkup(keyboard)
你能指出我哪里做错了吗?
非常感谢您的帮助
我找到了解决方案,如果我以这种方式编写代码,它会按我想要的方式工作。
keyboard = []
for i, events in enumerate(Events):
if (events.gid == gid):
keyboard = keyboard +
[[InlineKeyboardButton(events.etkinlik + u" ", callback_data=i),
InlineKeyboardButton(events.etkinlik + u" ", callback_data=i + 100)]]
return InlineKeyboardMarkup(keyboard)
我想为 python 中的 Telegram 创建一个 InlineKeyboardButton,就像下面的函数一样,但我想动态地进行。此函数将两个按钮组合在一行中,并将一个按钮添加到第二行。我想每行做两个按钮。
def options(bot, update):
keyboard = [[InlineKeyboardButton("Option 1", callback_data='1'),
InlineKeyboardButton("Option 2", callback_data='2')],
[InlineKeyboardButton("Option 3", callback_data='3')]]
reply_markup = InlineKeyboardMarkup(keyboard)
update.message.reply_text('Please choose:', reply_markup = reply_markup)
但是无论我尝试什么,我都会收到类似
的错误消息data['inline_keyboard'].append([x.to_dict() for x in inline_keyboard])
AttributeError: 'list' object has no attribute 'to_dict'
我的代码如下:
def create_options(self, gid, Events):
opts = []
o = []
keyboard = []
for i, events in enumerate(Events):
if (events.gid == gid):
o.append([[InlineKeyboardButton(events.etkinlik + u" ", callback_data=i),InlineKeyboardButton(events.etkinlik + u" ", callback_data=i)]])
opts.append(o)
keyboard.append(opts)
return InlineKeyboardMarkup(keyboard)
你能指出我哪里做错了吗?
非常感谢您的帮助
我找到了解决方案,如果我以这种方式编写代码,它会按我想要的方式工作。
keyboard = []
for i, events in enumerate(Events):
if (events.gid == gid):
keyboard = keyboard +
[[InlineKeyboardButton(events.etkinlik + u" ", callback_data=i),
InlineKeyboardButton(events.etkinlik + u" ", callback_data=i + 100)]]
return InlineKeyboardMarkup(keyboard)