键盘快捷键“接受1个位置参数,但给出了2个”

2024-04-26 10:30:25 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试使用键盘快捷键重置游戏。在前面的初始化类中,我创建了一个菜单来启动一个新游戏,并使用自复位重置分数/网格等。 我现在尝试用同一个命令实现快捷方式——reset是类中的一个方法。在

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

这是错误:

^{pr2}$

我的困惑是自复位在初始阶段工作得很好,但是在快捷方式下就不行了?在

我看不出快捷方式是如何给方法提供任何位置参数的。在

如果我改成自复位()我得到一个关于当前类缺少\u game属性的错误。在

重置方法如下:

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

Tags: 方法命令selfgame网格游戏错误菜单
1条回答
网友
1楼 · 发布于 2024-04-26 10:30:25

这很简单-无论绑定快捷方式的机制是什么,它都会向您的reset方法传递一个额外的参数。在

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

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

所以,搜索“bind\u all”时,我们会发现您的代码实际上使用了tkinter,而tkinter传递给您的方法的是“event”—一个包含有关实际按下的键的信息的对象,以及这样的-http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm

相关问题 更多 >