尝试制作键盘快捷键以重置游戏。在__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())
答案 0 :(得分:4)
这很简单 - 无论绑定快捷方式的机制如何,它都会向您的reset
方法传递额外的参数。
因为你根本不关心它是什么,只需声明你的方法接受 一个额外的可选参数,你应该是好的:
...
def reset(self, event=None):
self._game.get_default_score()
...
因此,搜索“bind_all”我们发现你的代码实际上使用了tkinter,而你的方法中的tkinter传递的是“事件” - 一个对象,其中包含关键字whas实际按下的信息等等 - {{3} }