gpt4 book ai didi

python - 键盘快捷键 "Takes 1 positional argument but 2 were given"

转载 作者:太空宇宙 更新时间:2023-11-04 09:59:41 25 4
gpt4 key购买 nike

尝试制作键盘快捷键来重置游戏。在 __init__ 类的前面,我创建了一个菜单来开始一个新游戏,并使用 self.reset 来重置分数/网格等。我现在一直在尝试使用相同的命令来实现快捷方式 - 重置是类中的一个方法。

self._master.bind_all('<Control-n>', self.reset)

这是错误:

TypeError: reset() takes 1 positional argument but 2 were given

我的困惑是 self.reset 在 __init__ 的早期工作正常但随后不适用于快捷方式?

我什至没有看到快捷方式如何为该方法提供任何位置参数。

现在,如果我将其更改为 self.reset(),我会收到有关当前类缺少 _game 属性的错误。

重置方法如下:

def reset(self):
self._game.get_default_score()
self._game.reset()
self._grid_view.draw(self._game.grid, self._game.find_connections())

最佳答案

这很简单 - 无论绑定(bind)快捷方式的机制如何,它都会向您的 reset 方法传递一个额外的参数。

既然你根本不关心它是什么,就声明你的方法接受一个额外的可选参数,你应该很好:

...
def reset(self, event=None):
self._game.get_default_score()
...

因此,搜索“bind_all”,我们发现您的代码实际上使用了 tkinter,而 tkinter 传递给您的方法的是“事件”——一个包含实际按下的键等信息的对象 - http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm

关于python - 键盘快捷键 "Takes 1 positional argument but 2 were given",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44288364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com