键盘快捷键 "Takes 1 positional argument but 2 were given"
Keyboard Shortcut "Takes 1 positional argument but 2 were given"
正在尝试创建一个键盘快捷键来重置游戏。在 __init__ class 之前,我创建了一个菜单来开始新游戏,并使用 self.reset 重置 score/grid 等。
我现在一直在尝试使用相同的命令来实现快捷方式 - 重置是 class.
中的一种方法
self._master.bind_all('<Control-n>', self.reset)
这是错误:
TypeError: reset() takes 1 positional argument but 2 were given
我的困惑是,self.reset 在 __init__ 之前工作正常,但后来不适用于快捷方式?
我看不出快捷方式是如何为该方法提供任何位置参数的。
现在,如果我将其更改为 self.reset(),我会收到有关当前 class 缺少 _game 属性的错误消息。
重置方法如下:
def reset(self):
self._game.get_default_score()
self._game.reset()
self._grid_view.draw(self._game.grid, self._game.find_connections())
这很简单 - 无论绑定快捷方式的机制如何,它都会向您的 reset
方法传递一个额外的参数。
因为你根本不在乎它是什么,只要声明你的方法接受
一个额外的可选参数,你应该很好:
...
def reset(self, event=None):
self._game.get_default_score()
...
因此,搜索 "bind_all" 我们发现您的代码实际上使用了 tkinter,而 tkinter 传递给您的方法的是 "event" - 一个对象,其中包含实际按下的键和这样 - http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm
正在尝试创建一个键盘快捷键来重置游戏。在 __init__ class 之前,我创建了一个菜单来开始新游戏,并使用 self.reset 重置 score/grid 等。 我现在一直在尝试使用相同的命令来实现快捷方式 - 重置是 class.
中的一种方法self._master.bind_all('<Control-n>', self.reset)
这是错误:
TypeError: reset() takes 1 positional argument but 2 were given
我的困惑是,self.reset 在 __init__ 之前工作正常,但后来不适用于快捷方式?
我看不出快捷方式是如何为该方法提供任何位置参数的。
现在,如果我将其更改为 self.reset(),我会收到有关当前 class 缺少 _game 属性的错误消息。
重置方法如下:
def reset(self):
self._game.get_default_score()
self._game.reset()
self._grid_view.draw(self._game.grid, self._game.find_connections())
这很简单 - 无论绑定快捷方式的机制如何,它都会向您的 reset
方法传递一个额外的参数。
因为你根本不在乎它是什么,只要声明你的方法接受 一个额外的可选参数,你应该很好:
...
def reset(self, event=None):
self._game.get_default_score()
...
因此,搜索 "bind_all" 我们发现您的代码实际上使用了 tkinter,而 tkinter 传递给您的方法的是 "event" - 一个对象,其中包含实际按下的键和这样 - http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm