Atajo de teclado “Toma 1 argumento posicional pero 2 fueron dados”

Tratando de hacer un atajo de teclado para restablecer un juego. Anteriormente en la clase __init__ creo un menú para comenzar un juego nuevo, y uso self.reset para restablecer la puntuación / cuadrícula, etc. Ahora he estado tratando de implementar el acceso directo con el mismo comando: el restablecimiento es un método dentro de la clase .

self._master.bind_all('', self.reset) 

Este es el error:

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

Mi confusión es que el self.reset funciona bien anteriormente en el __init__ pero, ¿no funciona para el acceso directo?

No veo cómo el atajo está incluso dando argumentos posicionales al método.

Ahora, si lo cambio a self.reset (), obtengo un error sobre la clase actual que falta el atributo _game.

Aquí está el método de reinicio:

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

Eso es fácil: cualquiera que sea el mecanismo que une el acceso directo, está pasando un parámetro adicional a su método de reset .

Ya que no le importa lo que sea, simplemente declare su método para aceptar un parámetro opcional adicional, y debería ser bueno:

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

Por lo tanto, al buscar “bind_all” descubrimos que su código realmente usa tkinter, y que tkinter passe junto con su método es el “evento”, un objeto con información sobre qué tecla fue presionada y tal – http://effbot.org /tkinterbook/tkinter-events-and-bindings.htm