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 :

afficher mot dans une zone Entry


Sujet :

Tkinter Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2014
    Messages : 14
    Points : 13
    Points
    13
    Par défaut afficher mot dans une zone Entry
    Bonjour,
    Cette fois-ci, j'ai pour problème le fait que quand l'utilisateur rentre un mot (clef) dans une Entry (obj4), celui-ci est masqué par défaut mais peut être affiché si l'utilisateur coche un checkbutton. Seulement, s'il on rentre le mot une première fois après avoir coché la case, obj4 est considéré comme vide. En revanche, si on remplit obj4, qu'on coche la case pour afficher le mot et qu'on rentre à nouveau ce dernier après que celui-ci se soit effacé, obj4 contient le mot !

    Si vous voulez obtenir le programme, il vous faudra l'algol complet. Si vous relevez d'autres problèmes, merci de les laisser, nous travaillons encore dessus.

    Merci d'avance.
    Fichiers attachés Fichiers attachés

  2. #2
    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 776
    Points
    36 776
    Par défaut
    Citation Envoyé par theTheoS88 Voir le message
    Cette fois-ci, j'ai pour problème le fait que quand l'utilisateur rentre un mot (clef) dans une Entry (obj4), celui-ci est masqué par défaut mais peut être affiché si l'utilisateur coche un checkbutton. Seulement, s'il on rentre le mot une première fois après avoir coché la case, obj4 est considéré comme vide. En revanche, si on remplit obj4, qu'on coche la case pour afficher le mot et qu'on rentre à nouveau ce dernier après que celui-ci se soit effacé, obj4 contient le mot !
    houlala... votre code fait mal au yeux et vos explications sont "panique à bord".

    Pourquoi recréer un obj4 dans le callback?

    Vous vous rendez compte qu'au plus vous allez ajouter de trucs sympa, au plus ca fera des lignes et des variables... Vous allez vous retrouver tel Frankenstein à la merci d'un monstre incontrôlable qui va vous bouffer.

    Une fois écrit un truc comme:
    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
    import tkinter as tk
     
    def do_hide():
        print('do_hide')
        if hide_var.get():
            entry_key.configure(show='')
        else:
            entry_key.configure(show='*')
     
     
    app = tk.Tk()
     
    entry_key = tk.Entry(app, width=30)
    entry_key.insert('end', '123')
    entry_key.pack()
     
    hide_var = tk.IntVar()
    hide_key=tk.Checkbutton(app, text="Afficher mot clé", variable=hide_var, onvalue=1, offvalue=0, command=do_hide)
    hide_key.pack()
     
    app.mainloop()
    Il faut le structurer pour le mettre dans un coin et ne plus y penser:

    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
    import tkinter as tk
     
    def create_entry_key(app):
     
        def do_hide():
            print('do_hide')
            if var.get():
                entry.configure(show='')
            else:
                entry.configure(show='*')
     
        entry = tk.Entry(app, width=30)
        entry.insert('end', '123') 
        var = tk.IntVar()
        button=tk.Checkbutton(app, text="Afficher mot clé", variable=var, onvalue=1, offvalue=0, command=do_hide)
     
        return entry, button
     
    app = tk.Tk()
     
    entry_key, hide_key = create_entry_key(app)
    entry_key.pack()
    hide_key.pack()
     
    app.mainloop()
    Le machin est dans sa boite create_entry_key et tout ce qui en dépend est "visible".
    Essayez d'apprendre un peu la POO c'est un bon moyen pour garder la chose sous contrôle.
    Les boîtes seront plus formelles que le code que j'ai pondu, car Python est ouvert à de nombreux styles côte "structure"... Choississez votre style mais "structurez".


    - 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. afficher pdf dans une zone limité
    Par nadiaflamingenierie dans le forum C#
    Réponses: 4
    Dernier message: 18/05/2010, 16h11
  2. Afficher texte dans une zone texte
    Par bob633 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 02/04/2010, 20h52
  3. Réponses: 14
    Dernier message: 22/11/2009, 05h48
  4. Réponses: 8
    Dernier message: 17/12/2008, 11h03
  5. afficher date dans une zone de texte
    Par mawelle dans le forum IHM
    Réponses: 2
    Dernier message: 19/05/2008, 18h43

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