Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Tkinter] Interactions GUI et code du programme

Sujet résolu
    21 décembre 2016 à 9:37:10

    Bonjour,

    Depuis plusieurs mois je développe un petit programe en Python 2.7 sous Ubuntu, de manière autodidacte (je ne suis pas informaticien) grâce aux différents cours/tutos/forums.. Internet quoi. Il fonctionne en mode console et j'aimerais faire une interface graphique en utilisant Tkinter mais là je cale. 

    Le problème:

    le programme est pour le moment composé de deux fichiers .py, un contenant le corps du programme et l'autre des fonctions appelées par ce programme. 

    Pour la structure, le programme prends l'utilisateur dans une boucle et demande à l'utilisateur quoi faire tant qu'il ne veux pas quitter. Ce qui donne en gros:

    Tant que que faire<> quitter

        que faire=Input(Quefaire?)

         if que faire==1

             fonction1

         if que faire ==2

             Fonction2

    et ainsi de suite....

    Donc pour le moment l'utilisateur écrit les commandes dans le terminal. Je voudrais dans un premier temps remplacer ces saisies par un clic sur différents boutons. 

    Je peux me débrouiller pour la création des boutons, mais je ne sais pas comment agencer les choses pour que ça communique et pilote le programme. La partie interface doit elle être dans un troisième fichier qui appelle les autres? Ou doit elle contenir la boucle principale? J'avais une piste en utilisant les "events" mais je n'ai pas réussi. Cette partie n'est vraiment pas claire pour moi, si vous pouviez me donner un exemple simple sur le même type d'architecture ou un lien vers un sujet similaire dont vous avez connaissance ce serait super! 

    Je vous remercie, 

    antoine

    • Partager sur Facebook
    • Partager sur Twitter
      21 décembre 2016 à 11:39:35

      Salut,

      la création de boutons te permettra de supprimer ta boucle c'est à dire si tu créer une fenêtre avec un bouton, puis que tu termines ton code par "fenetre.mainloop()", alors la boucle se fera toute seule. Tu n'a qu'à créer tes boutons avec leur fonction associée (command=fonction1).

      from tkinter import*
      
      def fonction1():
          "ce que doit faire ta fonction"
          "tu peux également appeler ton autre programme ici"
      
      fenetre = Tk()
      
      bouton_1 = Button(fenetre, text='premier',command=fonction1)
      bouton_1.pack()
      
      fenetre.mainloop()



      • Partager sur Facebook
      • Partager sur Twitter
      fabien
        21 décembre 2016 à 17:21:24

        Bonsoir, 

        Merci pour cette premiere réponse, je vais essayer de travailler dans cette direction, mais j'ai l'impression qu'il va y avoir un assez gros travail de refonte du code existant. Si entre temps vous voyez d'autres solutions qui me permettraient de conserver la structure avec le "if quefaire==...." mais juste supprimer la boucle "tant que" (réduisant la reorganisation de mon code), merci de m'en faire part.

        Bonne soirée

        antoine

        • Partager sur Facebook
        • Partager sur Twitter
          21 décembre 2016 à 19:31:20

          En effet cette méthode entraînera un changement important dans la structure de ton code mais cela reste la méthode la plus simple.

          tu peux également, mais plus compliqué, ne pas créer de boutons mais les dessiner sur Tkinter puis détecter la position du clic afin de connaître une zone précise. Alors là tu pourras tester si le clic vaut 1, 2 ou 3 ect... grâce aux "if quefaire==..." :)

          Bonne soirée

          • Partager sur Facebook
          • Partager sur Twitter
          fabien
            21 décembre 2016 à 20:25:32

            Merci encore, je pense que je vais tenter la premiere solution qui semble plus propre, et puis si tu me dis que c'est la plus simple... ca me fera l'occasion de mettre un peu d'odre dans mon bazar code ;)

            Antoine

            • Partager sur Facebook
            • Partager sur Twitter

            [Tkinter] Interactions GUI et code du programme

            × 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