2 votes

Comment mettre à jour un Sprite dans pygame qui prend dans une fonction i.e. lambda ?

Disons que j'ai une classe de sprite de bouton comme

class Button(pygame.sprite.Sprite): 
     def __init__(self, callback, ...):
         self.callback = callback

Maintenant, le callback est une fonction, mais il prend par exemple un tableau et fait quelque chose avec. Une fois que j'ai cliqué sur le bouton, le tableau est modifié, mais maintenant je veux appliquer le même bouton mais sur le nouveau tableau ?

Notez que le bouton fonctionne à la première itération mais je veux maintenant que la fonction soit mise à jour avec le nouveau tableau.

1voto

Glenn Mackintosh Points 2664

Si vous passez un lambda (ou une fonction contenant le tableau comme fermeture) à callback alors tout ce que vous devez faire pour changer cela est de réassigner self.callback avec un nouveau. Je vous suggère de le faire avec une méthode.

    def set_callback(self, callback):
        self.callback = callback

Vous pouvez simplement définir la fonction de rappel où vous voulez qu'elle soit modifiée, y compris à l'intérieur de la fonction de rappel précédente.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X