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 :

Comment récupérer ce que l'utilisateur tape dans un Entry ?


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Par défaut Comment récupérer ce que l'utilisateur tape dans un Entry ?
    Bonjour. Voila, je travaille sur mon projet de fin d'année qui est un puissance 4. Mon problème est que je veux créer un système de fichier avant que le jeu ne commence afin d'enregistrer le pseudo du joueur et ses scores mais je n'arrive pas a récupérer le pseudo que l'utilisateur a tapé.
    Pouvez-vous m'aider svp ?

  2. #2
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    mais je n'arrive pas a récupérer le pseudo que l'utilisateur a tapé
    Ou, Quoi, Comment (Console, GUI, etc).
    Tout est possible à partir de là.

    @+

  3. #3
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bon, ok: Le truc de base puisque vous parlez d'Entry.
    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
    try:
        import Tkinter as Tk
    except:
        import tkinter as Tk
     
    def setlabel():
        label.config(text=entry.get())
     
    root = Tk.Tk()
    label = Tk.Label(root)
    entry = Tk.Entry(root)
    bouton = Tk.Button(root, text='Valid', command=setlabel)
    label.pack()
    entry.pack()
    bouton.pack()
    root.mainloop()

  4. #4
    Membre chevronné Avatar de Bear the french
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations forums :
    Inscription : Mai 2012
    Messages : 352
    Par défaut
    Bonjour,

    Même si ce n'est pas vraiment le sujet du fil et en rapport au code de PauseKawa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    try:
        import Tkinter as Tk
    except:
        import tkinter as Tk
    Le fonctionnement en résumé :
    Dans un premier temps, cette clause d'essai est exécutée (clause try: les instructions entre les mots-clés try et except).
    S'il ne se produit pas d'erreur, la clause d'exception (clause except) est ignorée, et l'exécution du try est terminée.
    Si une erreur se produit à un moment de l'exécution de la clause d'essai, le reste de la clause try est ignoré.
    Puis si son type correspond à l'exception donnée après le mot-clé except, la clause except est exécutée, puis l'exécution reprend après l'instruction try.

    Le pourquoi de cette clause d'essai :
    Tkinter porte une minuscule avec Python 3 et une majuscule avec Python 2.x.

    C'est donc une façon astucieuse de rendre compatible les codes Tkinter sous les deux versions. Et cette astuce, toute simple, me plait. C'est sans doute basique pour les habitués

    Je vais pouvoir inclure ce bout de code dans mes mini-scripts Tkinter.

    Donc mon post est plus une réflexion personnelle qu'une réponse. Mais comme ça peut être utile à d'autres débutants, je partage...

    Bertrand

  5. #5
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    C'est quand même de l'écriture rapide ou l'on ne précise pas l'erreur attendue.
    une version plus 'propre' en serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    try:
        import Tkinter as Tk
    except ImportError:
        import tkinter as Tk
    Note: as Tk permettant de repérer plus facilement le code, et reste en accord avec Tkinter qui commence les noms avec une majuscule (Canvas, Tk etc).
    Maintenant vu que cela viens de la Version de Python il est possible de se passer du cache misère try/except
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> from platform import python_version
    >>> if python_version().startswith('2'):
    ...     import Tkinter as Tk
    ... else:
    ...     import tkinter as Tk
    if remplace try/except avantageusement dans de nombreux cas et a pour avantage d’être explicite et de ne pas cacher les autres erreurs.

    @+

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    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 699
    Par défaut
    Salut,

    Citation Envoyé par Bear the french Voir le message
    Le pourquoi de cette clause d'essai :
    Tkinter porte une minuscule avec Python 3 et une majuscule avec Python 2.x.

    C'est donc une façon astucieuse de rendre compatible les codes Tkinter sous les deux versions. Et cette astuce, toute simple, me plait. C'est sans doute basique pour les habitués
    Il serait plus "clair" d'écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import sys
    running_python3 = sys.version_info.major > 2
    if running_python3:
          import tkinter as tk
    else:
          import Tkinter as tk
    Cela associe la variable "tk" au module attendu indépendamment de la version de Python (enfin c'est l'intention).
    Et la préférence à "tk" sans majuscule car c'est un nom de "module" et non un nom de "classe".
    Notez que les changements dans la construction des classes du module ayant changé entre V2 et V3, cela ne suffit pas à rendre toutes les constructions "compatibles"!
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Exact: Pas besoin de platform, autant passer directement par le module sys.

    Par contre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    running_python3 = sys.version_info.major > 2
    Sauf utilisation de la variable pas besoin de stocker l'information.
    De même l'information est en double (running_python3 et sys.version_info[0]).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> from sys import version_info
    >>> if version_info.major[0] > 2:
    ...    import tkinter as Tk
    ... else:
    ...    import Tkinter as Tk
    Mais j'aime bien le True/False du if running_python3:

    Ok pour donner du PEP8 mais je trouve plus visuel le 'T' majuscule.
    C'est vrais que cela tend a se rationaliser avec Python 3 (tkinter etc) mais on reste, pour le principe de compatibilité, avec des noms du style Canvas, Frame, IntVar (etc... Volonté de différencier l'objet Python de celui Tcl/TK ? Canvas != canvas ?).

    Enfin: Querelles de clocher et le True/False est très bien.

    @+

  8. #8
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Mea culpa: Comme Tkinter import aussi sys pas besoin de s'en passer: Le mécanisme d'import fait qu'il n'est pas importé deux fois.
    Le code de wiztricks est très bien en fait

  9. #9
    Membre chevronné Avatar de Bear the french
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations forums :
    Inscription : Mai 2012
    Messages : 352
    Par défaut
    Bonjour,

    En fait de "plus clair", j'aurai du dire "apparemment plus simple et court"

    Face à ce problème chronique, j'utilisais la méthode artisanale du "trouve et remplace" (dans mon éditeur, menu Edit, sous-menu Replace). Je remplaçais ainsi tkinter par Tkinter.

    J'ai noté la version du code ci-dessous comme étant la bonne (celle qui recueille le consensus) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import sys
    running_python3 = sys.version_info.major > 2
    if running_python3:
          import tkinter as tk
    else:
          import Tkinter as tk
    Merci pour vos interventions

    Bertrand

  10. #10
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    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 699
    Par défaut
    Salut,

    J'ai noté la version du code ci-dessous comme étant la bonne (celle qui recueille le consensus) :
    Elle est plus "claire".

    Pour des exemples simples(*) écrits dans la version courante de Python, un simple "import tkinter as tk" devrait suffire.
    (*) ceux qui se réduisent à un script lancé comme "__main__"

    Des choses comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import sys
    running_python3 = sys.version_info.major > 2
    if running_python3:
          import tkinter as tk
    else:
          import Tkinter as tk
    n'ont d'intérêt que si la compatibilité python 2/3 est vraiment l'objet de l'exemple.

    Hors "exemples", c'est le genre de construction qu'on cache rapidement dans un module "fourre-tout" appelé "globs", "helpers", "misc", "utils", "_impl",... ou comme vous voulez.

    Pour l'utiliser, vous écrirez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from globs import tk, running_python3
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #11
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Petite correction puisque l'on est sur une histoire de compatibilité
    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
    patrice@Zeus:~/Bureau$ /usr/bin/python2.6
    Python 2.6.7 (r267:88850, Aug 11 2011, 12:16:10) 
    [GCC 4.6.1] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import sys
    >>> sys.version_info.major
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'tuple' object has no attribute 'major'
    >>> sys.version_info
    (2, 6, 7, 'final', 0)
    >>> sys.version_info[0]
    2
    >>> quit()
    patrice@Zeus:~/Bureau$ /usr/bin/python3.2
    Python 3.2.2 (default, Sep  5 2011, 22:09:30) 
    [GCC 4.6.1] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import sys
    >>> sys.version_info
    sys.version_info(major=3, minor=2, micro=2, releaselevel='final', serial=0)
    >>> sys.version_info[0]
    3
    Comme vous le voyez sys.version_info ne retourne pas la même chose sous Python 2 ou 3 (depuis Python 2.7 en fait).
    sys.version_info[0] semble plus 'universel'.

    @+

  12. #12
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    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 699
    Par défaut
    Salut,

    Citation Envoyé par PauseKawa Voir le message
    Comme vous le voyez sys.version_info ne retourne pas la même chose sous Python 2 ou 3 (depuis Python 2.7 en fait).
    sys.version_info[0] semble plus 'universel'.
    Yup, le format a changé avec 2.7, 3.x, ...
    Raison de plus pour définir des objets construit "ailleurs" suivant les possibilités de "l'implémentation" de Python.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  13. #13
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2011
    Messages : 47
    Par défaut
    on pourrait peut-être répondre à la question de notre ami????
    moi, j'utiliserais la méthode get()

  14. #14
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Citation Envoyé par develuc Voir le message
    on pourrait peut-être répondre à la question de notre ami????
    moi, j'utiliserais la méthode get()
    Ben... C'est déjà fait, avec un exemple complet et fonctionnel...

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/08/2006, 17h01
  2. Réponses: 1
    Dernier message: 04/07/2006, 16h35
  3. Réponses: 6
    Dernier message: 14/06/2006, 16h55
  4. Réponses: 4
    Dernier message: 01/05/2006, 23h02
  5. Comment récupérer la valeur d'un dbGrid dans des fenêtres MDI ?
    Par sylvie cl dans le forum Composants VCL
    Réponses: 5
    Dernier message: 19/07/2005, 13h42

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