Partage
  • Partager sur Facebook
  • Partager sur Twitter

Empêcher l'execution d'une fonction lors de sa déf

    5 août 2015 à 11:02:57

    Bonjour à tous,

    Je me lance dans la programmation avec Python et je rencontre un petit soucis au moment de la définition d'une fonction.

    Je définis ma fonction, tout se passe parfaitement mais je souhaiterais que celle-ci ne s'éxécute pas lors de sa définition.

    Pour être plus clair, voici mon exemple:

    from tkinter import *
    
    def hello():
        print("Hello")
        return hello    
    
    fenetre = Tk()
    
    x = Button(fenetre,text="Essai",command=hello())
    x.pack()
    
    fenetre.mainloop

    Lors du lancement du programme, même si je ne touche à rien, le programme affiche >>>Hello

    Or, je voudrais que Hello n'apparaisse que lorsqu'on a cliqué sur le bouton.

    Comment faire? Merci d'avance pour votre aide.

    • Partager sur Facebook
    • Partager sur Twitter
      5 août 2015 à 11:14:10

      enlèves les parenthèses à hello():
      x = Button(fenetre,text="Essai",command=hello)


      -
      Edité par josmiley 5 août 2015 à 11:14:31

      • Partager sur Facebook
      • Partager sur Twitter

      Python c'est bon, mangez-en. 

        10 août 2015 à 22:53:56

        Je ne connais pas TK, mais je suis a peu près sûr que command demande un callable (http://gillesfabio.com/blog/2010/07/31/python-et-les-callables/) 

        Ta fonction hello est un callable et qui dans ton code se retourne elle même (donc retourne un callable) et du coup ca marche par magie. 

        mais en fait ce que tu veux passer à command ce n'est pas le résultat de l'appel de ta fonction hello mais la fonction elle même.

        Donc comme l'as dit josmiley retire les paranthèse pour passer directement ta fonction et non le résultat de l'appel de ta fonction et ensuite tu n'as pas besoin de retourner hello dans ta fonction hello. 

        from tkinter import *
         
        def hello():
            print("Hello") 
         
        fenetre = Tk()
         
        x = Button(fenetre,text="Essai",command=hello)
        x.pack()
         
        fenetre.mainloop



        • Partager sur Facebook
        • Partager sur Twitter

        Empêcher l'execution d'une fonction lors de sa déf

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown