我正在尝试使用 Discord 中的按钮创建游戏discord.py
,并且我正在使用discord.ActionRow
,但它给出了错误。以下是上下文函数:
async def create_game_board(self, view, callback):
buttons = []
for i in range(3):
row_buttons = []
for j in range(3):
button = discord.ui.Button(label="\u200b", style=discord.ButtonStyle.gray, custom_id=f"{i}_{j}")
button.callback = callback
row_buttons.append(button)
buttons.append(row_buttons)
print(len(buttons[0]))
view.add_item(discord.ActionRow(*buttons[0]))
view.add_item(discord.ActionRow(*buttons[1]))
view.add_item(discord.ActionRow(*buttons[2]))
return buttons
我的问题在于这个代码片段
view.add_item(discord.ActionRow(*buttons[0]))
view.add_item(discord.ActionRow(*buttons[1]))
view.add_item(discord.ActionRow(*buttons[2]))
但它会导致这个错误:
File "Removed for StackOverflow", line 111, in create_game_board
view.add_item(discord.ActionRow(*buttons[0]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: ActionRow.__init__() takes 2 positional arguments but 4 were given
我也尝试过这样做,discord.ActionRow(components=buttons[0])
但也会导致错误。
它似乎
ActionRow()
不像一些旧教程中那样起作用。但似乎它只在内部代码中使用,你根本不需要使用它。
你应该直接把按钮放在视图中,然后使用
Button(..., row=number)
最少的工作代码
已使用
discord.py 2.5.1
、py-cord 2.6.1
、进行测试nextcord 3.1.0