est-il possible de passer des arguments supplémentaires à un rappel d'événement?
Par exemple, si mon événement se liant ressemblait à ceci; p> Comment puis-je passer les arguments à ma méthode? p>
4 Réponses :
Utilisez Lambda:
self.Bind(wx.EVT_BUTTON, lambda event, args=args: self.do_something(event, args), self.button) self.do_something(self,event,arguments): """do something with arguments""" pass
Lambda peut vous gâcher si vous l'utilisez dans une boucle. Je préfère l'approche FuncTools.Partiale.
@Foglebird, le désordre peut se produire si vous écrivez Evénement Lambda: Self.do_Something (Evénement, Args) Code> Au lieu de
Evénement Lambda, args = args: auto.do_something (événement, arguments) code> (note
args = args code>)
Utilisez Notez que dans ce cas, l'argument code> code> sera transmis à la fin de la liste des arguments. La forme Lambda équivalente est la suivante: p> FuncTools.Partial code>
, Ou dans l'affaire Général, un lambda code> expression
. < P> La forme partielle serait p>
Ce n'est pas clair lorsque vous souhaitez fournir ces arguments, mais si vous souhaitez les fournir à puis lorsque lidez code> heure (telle que vous pouvez avoir un
do_something code> qui prend en charge plusieurs utilisations. ), vous pouvez utiliser
functools.Partial code>:
do_something code> est appelé, il sera appelé avec le
argument Code> Vous avez passé dans
partiel code>, ainsi que l'événement passé par le rappel. P> P>
J'ai oublié de le faire de cette façon. Je viens d'utiliser lambda moi-même.
Utilisez une fonction Lambda. Il y a une documentation sur cette documentation sur le wxpython wiki . J'en ai aussi écrit à ce sujet dans mon Tutoriel Lambda . Voici l'exemple boiteux que j'ai créé quand j'ai écrit que (qui est aussi dans l'article):
Dupliqué possible de est-il possible de passer des arguments dans des liaisons d'événements? < / a>
Est-ce que cela répond à votre question? python, comment passer un argument à une fonction Pointeur Paramètre?