我正在尝试使用Telepot API包装器创建用于电报的基于纸牌的游戏机器人,但是我不知道如何使用垂直布局而不是水平布局
样例代码:
keyboard = []
for card in data['current_games'][userGame]['players'][messageLocationID]['cards']:
button = [KeyboardButton(text=card)]
keyboard += button
然后,我将sendMessage()方法与ReplyKeyboardMarkup()方法一起使用,但是它将创建一排又高又细的按钮,这会影响文本的显示。
我缺少步骤了吗?我能够使用以下方法创建一个正方形的键:
keyboard = [[KeyboardButton(text='0'), KeyboardButton(text='1'), KeyboardButton(text='2'), KeyboardButton(text='3')],
[KeyboardButton(text='4'), KeyboardButton(text='5'), KeyboardButton(text='6'), KeyboardButton(text='7')],
[KeyboardButton(text='8'), KeyboardButton(text='9'), KeyboardButton(text='10'), KeyboardButton(text='11')],
[KeyboardButton(text='12'), KeyboardButton(text='13'), KeyboardButton(text='14'), KeyboardButton(text='15')]]
我只能使用第二种方法创建键盘,因为我能够手动创建键盘,而无需通过编程来创建键盘,但是我无法在不按顺序访问每个卡的情况下处理卡列表,因为它是一个动态列表,每转一圈都会改变。
我查看了api注释,但找不到任何我可以使用的东西
根据第二个键盘的结果,我假设我可以通过将每张卡作为一个数组来创建垂直行,从而将其嵌套在原始数组中,但是根据我的经验,事实并非如此
我错过了一步吗?
由于电报中的键盘是字符串数组的数组,因此首先应创建“按钮行”(第一个数组),然后再将其作为一个元素添加到键盘(第二个数组)中。像这样的东西:
keyboard = []
row1 = ["card1", "card2", "card3"]
keyboard.append(row1)
row2 = ["card4", "card5", "card6"]
keyboard.append(row2)
print (keyboard)
>>>
[['card1', 'card2', 'card3'], ['card4', 'card5', 'card6']]
您可以将其放入一个循环中,因此可以根据需要动态创建它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句