Partage
  • Partager sur Facebook
  • Partager sur Twitter

Tkinter entry

    15 août 2014 à 12:14:53

    Salut à tous je débute en Python du moins avec Tkinter, j'aimerais savoir comment afficher du text que l'on saisis avec entry voici mon code, merci d'avance.

    from Tkinter import *
    
    windows = Tk()
    
    windows.title("Logiciel entrainement")
    
    def text_base():
    	champs = Label(windows, text="Welcome to my first logiciel")
    	champs.pack()
    text_base()
    
    
    def quit_logi():
    	button_quit = Button(windows, text="Quitter le logiciel", command=windows.quit)
    	button_quit.pack()
    quit_logi()
    
    def entry():
    	var_texte = StringVar()
    	ligne_texte = Entry(windows, textvariable=var_texte, width=30, fg="red")
    	ligne_texte.pack()
    entry()
    
    windows.mainloop()
    



    • Partager sur Facebook
    • Partager sur Twitter
    <?php void var_dump ( mixed $expression [, mixed $... ] ) ?>
      15 août 2014 à 12:27:22

      Salut,

      Pour récupérer la valeur d'un widget Entry(), il faut que tu utilise la méthode get() sur ton instance ligne_texte.

      PS: Pourquoi découpe-tu ton code avec des fonctions? Elles ne me paraissent pas nécessaire, et pourrait générer des erreurs.

      • Partager sur Facebook
      • Partager sur Twitter
      Précepte: Le mieux est l'ennemi du bien
        15 août 2014 à 12:29:28

        Olygrim a écrit:

        Salut,

        Pour récupérer la valeur d'un widget Entry(), il faut que tu utilise la méthode get() sur ton instance ligne_texte.

        PS: Pourquoi découpe-tu ton code avec des fonctions? Elles ne me paraissent pas nécessaire, et pourrait générer des erreurs.


        Merci je vais voir ! 

        Car ça me parait plus clair de découper mon code avec des fonctions 

        • Partager sur Facebook
        • Partager sur Twitter
        <?php void var_dump ( mixed $expression [, mixed $... ] ) ?>
          16 août 2014 à 12:54:58

          Salut, j'ai toujours le même problème avec le GET aidez moi voici mon nouveau code

          from Tkinter import *
          
          windows = Tk()
          
          windows.title("Robot")
          
          def text_base():
          	champs = Label(windows, text="Parle a Robot")
          	champs.pack()
          text_base()
          
          
          def quit_logi():
          	button_quit = Button(windows, text="Quitter le logiciel", command=windows.quit)
          	button_quit.pack()
          quit_logi()
          
          def entry():
          	var_texte = StringVar()
          	ligne_texte = Entry(windows, textvariable=var_texte, width=30, fg="red")
          	but1 = Button(windows, text = "Enregistrer", command = windows)
          	but1.pack()
          	ligne_texte.pack()
          	print var_texte.get()
          entry()
          
          windows.mainloop()
          

          -
          Edité par themachinator 16 août 2014 à 12:55:16

          • Partager sur Facebook
          • Partager sur Twitter
          <?php void var_dump ( mixed $expression [, mixed $... ] ) ?>
            16 août 2014 à 14:06:23

            N'oublie pas que tkinter est géré par les événements, donc si tu ne lie pas la mise à jour de ton affichage avec un événement, tu n'aura aucun changement.
            • Partager sur Facebook
            • Partager sur Twitter
            Précepte: Le mieux est l'ennemi du bien
              16 août 2014 à 15:26:51

              Olygrim a écrit:

              N'oublie pas que tkinter est géré par les événements, donc si tu ne lie pas la mise à jour de ton affichage avec un événement, tu n'aura aucun changement.


              comment les liés ?
              • Partager sur Facebook
              • Partager sur Twitter
              <?php void var_dump ( mixed $expression [, mixed $... ] ) ?>
                16 août 2014 à 15:43:33

                Tu peux par exemple utiliser la méthode bind() sur ton instance ligne_texte, et créer une nouvelle fonction pour faire la MAJ:

                #Le premier paramètre de la fonction doit nécessairement être lié à l'événement
                #lorsqu'on utilise la méthode bind. Par convention, on lui donne le nom de
                #'event', et n'a pas d'influence sur le reste du code.
                def MAJ(event):
                    print var_texte.get()
                
                #Ici, l'événement est lié à ton widget ligne_texte. Quand tu cliquera dessus
                #avec la touche Entrée (qui a pour code <Return>, alors la fonction MAJ sera
                #appelé
                ligne_texte.bind("<Return>", MAJ)





                • Partager sur Facebook
                • Partager sur Twitter
                Précepte: Le mieux est l'ennemi du bien
                  16 août 2014 à 15:47:54

                  Merci de ta réponse, voici mon nouveau code mais toujours rien : 

                  from Tkinter import *
                  
                  windows = Tk()
                  
                  windows.title("Robot")
                  windows.geometry("400x300")
                  
                  def text_base():
                  	champs = Label(windows, text="Parle a Robot")
                  	champs.pack()
                  text_base()
                  
                  
                  def quit_logi():
                  	button_quit = Button(windows, text="Quitter le logiciel", command=windows.quit)
                  	button_quit.pack()
                  quit_logi()
                  
                  def MAJ(event):
                  	var_texte = StringVar()
                  	ligne_texte = Entry(windows, textvariable=var_texte, width=30, fg="red")
                  	but1 = Button(windows, text = "Parlez avec Robot !", command = windows)
                  	ligne_texte.pack()
                  	but1.pack()
                      	print var_texte.get()
                  	ligne_texte.bind("<Return>", MAJ)
                  
                  windows.mainloop()
                  



                  • Partager sur Facebook
                  • Partager sur Twitter
                  <?php void var_dump ( mixed $expression [, mixed $... ] ) ?>
                    16 août 2014 à 16:07:40

                    Le problème est de tout mettre dans des fonctions. Ce n'est pas une bonne idée, car les variables sont créées à l'intérieur de celles-ci et certaines seront inaccessibles en dehors (voir espace des noms, scope, portée lexicale, variable mutable/immutable). Ne sachant pas vraiment ce que tu veux faire, je t'ai réécrit ton code à ma sauce:

                    from Tkinter import *
                    
                    
                    #La fonction qui va afficher la valeur de la variable
                    def MAJ(event):
                        print var_texte.get()  #affiche le résultat dans la console
                    
                    
                    #La fenêtre principale
                    windows = Tk()
                    windows.title("Robot")
                    windows.geometry("400x300")
                    
                    
                    #La variable tkinter
                    var_texte = StringVar()
                    
                    
                    #Un label
                    champs = Label(windows, text="Parle a Robot")
                    champs.pack()
                    
                    #Un autre label qui répète ce qui est écrit
                    champs_repete = Label(windows, textvariable=var_texte)
                    champs_repete.pack()
                    
                    
                    #Le widget de saisie de texte
                    ligne_texte = Entry(windows, textvariable=var_texte, width=30, fg="red")
                    ligne_texte.bind("<Return>", MAJ)
                    ligne_texte.pack()
                    
                    
                    #Le bouton quitter
                    button_quit = Button(windows, text="Quitter le logiciel", command=windows.quit)
                    button_quit.pack()

                    -
                    Edité par Olygrim 16 août 2014 à 16:09:18

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Précepte: Le mieux est l'ennemi du bien
                      16 août 2014 à 16:15:27

                      Olygrim a écrit:

                      Le problème est de tout mettre dans des fonctions. Ce n'est pas une bonne idée, car les variables sont créées à l'intérieur de celles-ci et certaines seront inaccessibles en dehors (voir espace des noms, scope, portée lexicale, variable mutable/immutable). Ne sachant pas vraiment ce que tu veux faire, je t'ai réécrit ton code à ma sauce:

                      from Tkinter import *
                      
                      
                      #La fonction qui va afficher la valeur de la variable
                      def MAJ(event):
                          print var_texte.get()  #affiche le résultat dans la console
                      
                      
                      #La fenêtre principale
                      windows = Tk()
                      windows.title("Robot")
                      windows.geometry("400x300")
                      
                      
                      #La variable tkinter
                      var_texte = StringVar()
                      
                      
                      #Un label
                      champs = Label(windows, text="Parle a Robot")
                      champs.pack()
                      
                      #Un autre label qui répète ce qui est écrit
                      champs_repete = Label(windows, textvariable=var_texte)
                      champs_repete.pack()
                      
                      
                      #Le widget de saisie de texte
                      ligne_texte = Entry(windows, textvariable=var_texte, width=30, fg="red")
                      ligne_texte.bind("<Return>", MAJ)
                      ligne_texte.pack()
                      
                      
                      #Le bouton quitter
                      button_quit = Button(windows, text="Quitter le logiciel", command=windows.quit)
                      button_quit.pack()

                      -
                      Edité par Olygrim il y a 5 minutes

                      Ah d'accord, je n'avais pas vu merci de ton aide, sa s'ecrit bien dans la console mais pas a l'ecran

                      • Partager sur Facebook
                      • Partager sur Twitter
                      <?php void var_dump ( mixed $expression [, mixed $... ] ) ?>
                        16 août 2014 à 16:24:49

                        Pour moi ça marche bien. Dans le code, il y a:

                        _ 2 labels. L'un appelé champs qui affiche le texte Parle à Robot. L'autre qui s'appelle champs_repete (invisible au début, mais tu peux personnaliser son apparence) qui affiche exactement ce que tu tape dans ta zone de saisie

                        _1 zone de saisie appelé ligne_texte. Tu écrit ton texte à l'intérieur, et lorsque tu appuie sur la touche Entrée, tu affiche dans la console le contenu de la variable var_texte.

                        _1 bouton quitter (que je n'ai pas testé, mais qui est censé fermer la fenêtre)

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Précepte: Le mieux est l'ennemi du bien
                          16 août 2014 à 16:45:05

                          Merci de ton aide je vais re-testé ton code et essayer de bidouiller un peu et je te dit quoi !
                          • Partager sur Facebook
                          • Partager sur Twitter
                          <?php void var_dump ( mixed $expression [, mixed $... ] ) ?>

                          Tkinter entry

                          × 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