IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Utilisation de .get() dans un boucle for


Sujet :

Tkinter Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Utilisation de .get() dans un boucle for
    Bonjour à tous,

    Tout d'abord je vous remercier de l'attention portée à mon problème.

    Je précise que je travail sur python2.7 et que je suis un néophyte.

    Mon problème est le suivant, je veux créer un nombre "nbf" d'entrée via l'interface Tkinter. Ce nombre sera défini en amont par l'utilisateur. Je n'ai pas trop de problèmes avec cette étape et mes widgets se créent bien automatiquement, comme je le désire, via l'utilisation d'une simple boucle for.

    Je souhaite, via l'utilisation d'un bouton, que l'utilisateur puisse lancer une fonction utilisant les informations (texte ou grandeurs numériques) qu'il aura pris le soin d'entrée dans les nbf widgets d'entrée disponibles.

    Il me faut donc utiliser widget.get() sur mes différentes entrée, dans une boucle. Seulement, je n'y parviens pas et ai déjà essayé plusieurs méthodes, comme placer les widgets Entry dans une liste, mais rien n'y fait.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    #  /!\  Python 2.7  /!\
    from Tkinter import *
    
    root = Tk()
    
    nbf = 3
    
    #Pour chaque itération (et donc chaque nbf) je créer un widget "Entry" que je place dans la mainloop "root"
    for i in range(int(nbf)):
        ent = Entry(root, name='ent'+'%d' % i)
        ent.grid(column=0, row=i)
        print(str(ent))
    
    
    • .ent0
    • .ent1
    • .ent2
    #autre méthode en créant les widgets dans une liste (également essayé avec un tableau numpy) """ ent_tab = [] for i in range(int(nbf)): ent_tab.append(Entry(root, name='ent'+'%d' % i).grid(column=0, row=i)) print(etn_tab)
    • [none, none, none]
    """ def checkcontent(): #Affichier ce que l'utilisateur à entrer dans les 3 champs crées précédements #for j in range(int(nbf)): #print(ent_tab[i].get()) pass #Création d'un bouton btn = Button(root, text="Tracer", command=checkcontent) btn.grid(column=1, row=i+1, sticky=E) root.mainloop()
    Auriez vous une idée de la marche à suivre pour utiliser les informations rentrées par l'utilisateur dans les règles de l'art.

    En vous remerciant par avance.

    Cordialement,

    Max_Pandaroux

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 329
    Points : 36 848
    Points
    36 848
    Par défaut
    Salut,

    Entry(root, name='ent'+'%d' % i).grid(column=0, row=i) retourne None: il faut d'abord créer le widget via Entry(root, name='ent'+'%d' % i) pour pouvoir récupérer l'instance (et la stocker dans une liste ou pas) puis lui appliquer .grid.

    - W

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Ca fonctionne, super ;)
    Merci wiztricks, je n'avais pas fait attention à ce détail. J'ai corrigé et arrive à obtenir le résultat souhaité sans problèmes supplémentaires.

    Pour ceux qui le souhaiterait, je laisse le petit bout de programme qui fonctionne bien ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    #  /!\  Python 2.7  /!\
    from Tkinter import *
     
    root = Tk()
    nbf = 3
    ent_tab = []
     
    for i in range(int(nbf)):
         ent = Entry(root, name='ent'+'%d' % i)
         ent_tab.append(ent)
         ent.grid(column=0, row=i)
    #     print(ent)
     
    def checkcontent():
        #Affichier ce que l'utilisateur à saisi dans les "nbf" champs crées précédements
        for j in range(int(nbf)):
            print(ent_tab[j].get())
        pass
     
    #Création d'un bouton
    btn = Button(root, text="Tracer", command=checkcontent)
    btn.grid(column=1, row=i+1, sticky=E)
     
    root.mainloop()


    Cordialement,

    Max_Pandaroux


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilisation de SET dans une boucle FOR
    Par GBardou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/10/2012, 00h54
  2. Utilisation de condition dans une boucle for-each
    Par siro1 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 09/03/2012, 17h07
  3. [Débutant] utilisation des Textbox dans une boucle For
    Par zayoub dans le forum VB.NET
    Réponses: 31
    Dernier message: 28/07/2011, 15h55
  4. Utiliser un pas dans une boucle For .. to .. do
    Par colorid dans le forum Langage
    Réponses: 4
    Dernier message: 14/06/2009, 11h09
  5. Réponses: 1
    Dernier message: 22/11/2007, 22h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo