Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Tkinter] savoir d'où à été appelée une fonction

Sujet résolu
    29 mars 2020 à 16:05:58

    Bonjour, j'ai un problème dans mon programme python avec Tkinter. J'ai créé un menu contenant des sauvegardes et j'aimerai qu'en cliquant sur une partie, on lance la fonction 'charger' avec pour argument le nom cette partie ou au moins que l'on puisse le récupérer. Voici mon code pour l'instant:

    menuPrincipal = Menu()
    fenetre.config(menu = menuPrincipal)
     # menu "chargement"
    menuCharger = Menu()
    menuPrincipal.add_cascade(label = "charger", menu = menuCharger)
     # toutes les parties
    for i in listeSauvegardes():
        menuCharger.add_command(label = i, command = self.charger)

    Serait-ce possible, sinon comment pourrait-je faire.

    • Partager sur Facebook
    • Partager sur Twitter
      29 mars 2020 à 16:17:03

      Bonjour,

      Peux-tu créer un mini code fonctionnel et reproduisant le problème ?

      • Partager sur Facebook
      • Partager sur Twitter

      Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
      La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

        29 mars 2020 à 16:56:26

        from tkinter import *
        listeSauvegardes = ["save1", "save2", "save3"]
        
        fenetre = Tk()
        
        def charger(nomSauvegarde):
            """chargement..."""
            a = 1 # pour l'instant on ne fait rien
        
        menuPrincipal = Menu()
        fenetre.config(menu = menuPrincipal)
         # menu "chargement"
        menuCharger = Menu()
        menuPrincipal.add_cascade(label = "charger", menu = menuCharger)
        # toutes les parties
        for i in listeSauvegardes:
            menuCharger.add_command(label = i, command = charger)
        
        

        Pour l'instant l'appel de la fonction 'charger' provoque une erreur car je n'arrive pas à y passer comme paramètre le nom de la sauvegarde.

        • Partager sur Facebook
        • Partager sur Twitter
          29 mars 2020 à 18:19:17

          from tkinter import *
          
          listeSauvegardes = ["save1", "save2", "save3"]
          
          fenetre = Tk()
          
          
          def charger(nomSauvegarde):
              """chargement..."""
              def wrap():
                  print(nomSauvegarde)
              return wrap
          
          menuPrincipal = Menu()
          fenetre.config(menu=menuPrincipal)
          # menu "chargement"
          menuCharger = Menu()
          menuPrincipal.add_cascade(label="charger", menu=menuCharger)
          # toutes les parties
          for i in listeSauvegardes:
              menuCharger.add_command(label=i, command=charger(i))
          
          fenetre.mainloop()
          
          • Partager sur Facebook
          • Partager sur Twitter

          Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
          La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

            30 mars 2020 à 18:58:26

            Merci ça a marcher. Mais j'ais du mal à en comprendre le fonctionnement. La fonction 'charger()' renvoie une fonction 'wrap()' mais ou passe le paramètre 'sauvegarde' à ce moment là?
            • Partager sur Facebook
            • Partager sur Twitter
              30 mars 2020 à 19:00:39

              Ce que demande command est une fonction sans argument, que retourne charger ? Une fonction sans argument...
              • Partager sur Facebook
              • Partager sur Twitter

              Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
              La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

                30 mars 2020 à 19:03:06

                Çà j'ai compris où de trouve le paramètre  'sauvegarde'?

                • Partager sur Facebook
                • Partager sur Twitter
                  30 mars 2020 à 19:15:56

                  Dans ton post de départ tu dis ceci

                  j'aimerai qu'en cliquant sur une partie, on lance la fonction 'charger' avec pour argument le nom cette partie ou au moins que l'on puisse le récupérer

                  Donc l'argument vient d'où ? Tu m'as donné un exemple simple à exécuter où il y avait cette liste de noms.

                  listeSauvegardes = ["save1", "save2", "save3"]

                  nomSauvegarde sera une variable qui sera modifiée selon l'incrémentation dans une boucle for.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
                  La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

                  [Tkinter] savoir d'où à été appelée une fonction

                  × 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