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

Python Discussion :

Affectation avec tkinter - Entry


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Affectation avec tkinter - Entry
    Bonjour,

    Je suis nouveau et merci d'avance pour ceux qui me répondront:
    Je cherche à récupérer une valeur dans une variable, ici la variable s. En lisant les forums, j'ai pu récupérer la valeur d'une saisie sous tkinter comme le code que je propose le montre. La valeur s'affiche sur l'interface graphique. Mais la variable s n'est pas affectée par sa valeur Puisque mon programme n'entre jamais dans la condition if (len(s)>8) malgré toutes les longues valeurs
    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
    41
    42
    43
    44
    45
    46
    47
    48
     
    from tkinter import *
     
    cb39={'A':'100001001', 'B':'001001001', 'C': '101001000','D':'000011001',
          'E':'100011000','F':'001011000','G':'000001101','H':'100001100',
          '+':'010001010','*':'010010100'}
    #J'ai supprimé du code volontairement pour cibler ma demande                    
    def saisiCode():
        global s
        s=valeur.get()
        print(s)
     
     
    fen1 =Tk()
    can1=Canvas(fen1,bg='dark grey', height=200, width=600)
    can1.pack(side=LEFT)
     
    s='ABC'
     
    bou2=Button(fen1,text='Quitter', command=fen1.quit)
     
    chaine=Label(fen1,text='Tapez le code que vous désirez voir s\'afficher. \
                            Puis cliquez sur Ok !')
     
    valeur=StringVar()
    entree=Entry(fen1,textvariable=valeur)
    bou1=Button(fen1,command=saisiCode,text='Ok !')
    chaine1=Label(fen1,text='vous avez tapé : '+s)
     
     
    print(s)
     
    if(len(s)>8):
     
        chaine1= Label(fen1,text='Recommencer, ceci n\'est pas possible!!!')
        chaine1.pack(side=TOP)
     
    else :
        pass        
     
    chaine.pack(side=TOP)
    entree.pack(side=TOP)
    bou1.pack(side=TOP)
    chaine1.pack(side=TOP)
    bou2.pack(side=BOTTOM)
     
    fen1.mainloop()
    fen1.destroy()

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par CapDobey Voir le message
    Bonjour,

    Je suis nouveau et merci d'avance pour ceux qui me répondront:
    Je cherche à récupérer une valeur dans une variable, ici la variable s. En lisant les forums, j'ai pu récupérer la valeur d'une saisie sous tkinter comme le code que je propose le montre. La valeur s'affiche sur l'interface graphique. Mais la variable s n'est pas affectée par sa valeur Puisque mon programme n'entre jamais dans la condition if (len(s)>8) malgré toutes les longues valeurs
    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
    41
    42
    43
    44
    45
    46
    47
    48
     
    from tkinter import *
     
    cb39={'A':'100001001', 'B':'001001001', 'C': '101001000','D':'000011001',
          'E':'100011000','F':'001011000','G':'000001101','H':'100001100',
          '+':'010001010','*':'010010100'}
    #J'ai supprimé du code volontairement pour cibler ma demande                    
    def saisiCode():
        global s
        s=valeur.get()
        print(s)
     
     
    fen1 =Tk()
    can1=Canvas(fen1,bg='dark grey', height=200, width=600)
    can1.pack(side=LEFT)
     
    s='ABC'
     
    bou2=Button(fen1,text='Quitter', command=fen1.quit)
     
    chaine=Label(fen1,text='Tapez le code que vous désirez voir s\'afficher. \
                            Puis cliquez sur Ok !')
     
    valeur=StringVar()
    entree=Entry(fen1,textvariable=valeur)
    bou1=Button(fen1,command=saisiCode,text='Ok !')
    chaine1=Label(fen1,text='vous avez tapé : '+s)
     
     
    print(s)
     
    if(len(s)>8):
     
        chaine1= Label(fen1,text='Recommencer, ceci n\'est pas possible!!!')
        chaine1.pack(side=TOP)
     
    else :
        pass        
     
    chaine.pack(side=TOP)
    entree.pack(side=TOP)
    bou1.pack(side=TOP)
    chaine1.pack(side=TOP)
    bou2.pack(side=BOTTOM)
     
    fen1.mainloop()
    fen1.destroy()
    Bonjour,

    La portion de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    chaine1=Label(fen1,text='vous avez tapé : '+s)
    print(s)
    if(len(s)>8):
        chaine1= Label(fen1,text='Recommencer, ceci n\'est pas possible!!!')
        chaine1.pack(side=TOP)
    else :
        pass
    ne s'exécutera qu'une seule fois avant d'entrer dans la boucle principale du gestionnaire d'événements .mainloop() de Tkinter.

    Pour pouvoir répéter une opération, vous devez l'inscrire dans une fonction qui sera appelée soit par un widget Tkinter soit programmatiquement.

    Ici, vous avez déclaré :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def saisiCode():
        global s
        s=valeur.get()
        print(s)
    Pourquoi ne pas vous en servir pour traiter entièrement la valeur saisie ?

    Exemple :

    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
    41
    42
    43
    44
    45
    46
    47
    48
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
     
    from tkinter import *
     
     
    def saisiCode():
        """validation de la valeur saisie ; c'est ici que tout se fait"""
     
        global s
     
        s = valeur.get()
     
        print("valeur saisie:", s)  # TRON console
     
        if len(s) > 8:
            resultat.set("Veuillez recommencer, valeur trop longue")
            entree.delete(0, END)
        else:
            resultat.set("Vous avez saisi : '{}'".format(s))
        # end if
     
    # end def
     
     
    fen1 = Tk()
    can1 = Canvas(fen1, bg='dark grey', height=200, width=600)
    can1.pack(side=LEFT)
     
    bou2 = Button(fen1, text='Quitter', command=fen1.destroy)
     
    chaine = Label(fen1, text='Tapez le code que vous désirez voir s\'afficher. \
    Puis cliquez sur Ok !')
     
    valeur = StringVar()
    entree = Entry(fen1, textvariable=valeur)
    bou1 = Button(fen1, command=saisiCode, text='Ok !')
     
    resultat = StringVar()
    chaine1 = Label(fen1, textvariable=resultat)
     
    chaine.pack(side=TOP)
    entree.pack(side=TOP)
    bou1.pack(side=TOP)
    chaine1.pack(side=TOP)
    bou2.pack(side=BOTTOM)
     
    fen1.mainloop()
    @+.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 781
    Points
    36 781
    Par défaut
    Salut,

    Une fois que l'interface graphique est lancée (.mainloop), vous ne pourrez qu'exécuter des fonctions/callbacks.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import tkinter as tk
     
    def show_entry():
        value = entry.get()
        print('read: /%s/' % value)
     
    app = tk.Tk()
    entry = tk.Entry(app)
    tk.Button(app, text='show_entry', command=show_entry).pack()
    entry.pack()
    tk.mainloop()
    Je cherche à récupérer une valeur dans une variable, ici la variable s. En lisant les forums, j'ai pu récupérer la valeur d'une saisie sous tkinter comme le code que je propose le montre. La valeur s'affiche sur l'interface graphique. Mais la variable s n'est pas affectée par sa valeur
    apprendre à programmer n'est pas un exercice de cueillette de bonnes recettes dans les forums.
    C'est un exercice de "compréhension" des techniques et d'accumulation de savoir faire.
    Vous avez de bons tutos qui donnent quelques explications, proposent des exercices adaptés,...
    La programmation asynchrone d'une interface graphique demande déjà d'être un bon débutant.

    Bon courage
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Ok Résolu
    Bonsoir, Un grand merci Tarball 69, j'ai fait ce tu as dit et cela fonctionne à merveille
    Je suppose wiztricks que ta solution est plus élégante et plus performante mais ta réponse polie mais
    condescendante m'a déplue
    Si je viens sur un forum digne de ce nom...c'est pour y trouver de l'aide mais pas de morale
    J'ai regardé les tutos et ils sont très incomplets, je ne parle même pas d'autres sites
    Mais, conseille moi les bons tutos ?
    Je débute sur ce forum,
    je viens de voir des sous-forums avec tkinter dans le forum GUI.
    Surtout merci pour votre réponse rapide et correcte.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Autres que
    Le bouquin de Gérard Swinnen, je l'ai lu.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 781
    Points
    36 781
    Par défaut
    Citation Envoyé par CapDobey Voir le message
    Le bouquin de Gérard Swinnen, je l'ai lu.
    Relisez le chapitre 10. Vous trouverez un exemple de code semblable au votre dans l'exemple de calculatrice minimaliste. L'important est d'assimiler les explications qui sont autour pour comprendre pourquoi çà s'écrit comme çà.

    Vous pourrez relire ce chapitre 10 fois.
    Sans prendre le temps de faire les exercices pour voir ce que çà donne dans la pratique, vous n'apprendrez pas grand chose.
    Et çà c'est du temps que vous devez passer vous pour apprendre à dompter l'interpréteur Python.

    à vous de voir.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. [Python 3.X] probleme avec un Entry tkinter
    Par chepaa dans le forum Tkinter
    Réponses: 5
    Dernier message: 18/08/2014, 21h10
  2. Réflexion sur la création d'un tableau en Tkinter avec des Entry
    Par calogerogigante dans le forum Tkinter
    Réponses: 5
    Dernier message: 23/01/2010, 17h35
  3. Probleme d'Entry avec tkinter
    Par gringo222 dans le forum Tkinter
    Réponses: 6
    Dernier message: 11/09/2008, 13h54
  4. [Tkinter] Un petit souçis d'event avec Tkinter
    Par fire.stone dans le forum Tkinter
    Réponses: 4
    Dernier message: 29/10/2005, 20h56
  5. [MaskEditBox] Affecter avec un réel
    Par fikou dans le forum Général VBA
    Réponses: 6
    Dernier message: 16/09/2002, 09h28

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