尝试制作键盘快捷键来重置游戏。在 __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/