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 :

Affichage lettre par lettre dans zone de Texte


Sujet :

Tkinter Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Affichage lettre par lettre dans zone de Texte
    Bonsoir,
    Je suis face à un problème. Voici une partie de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i in range(len(message_code)) :
                message_code_slow += message_code[i]
                TexteCode.delete(1.0, END)
                TexteCode.insert(1.0, message_code_slow)
                time.sleep(1)
    Ma variable 'message_code_slow' "grandit" à chaque fois d'une lettre. Ce que j'aimerais c'est que cette variable s'affiche progressivement dans ma zone de texte. Par exemple, 'A' puis 'AE' puis 'AEC', avec 1s d'intervalle entre chaque affichage. Actuellement, ce qu'il se passe, c'est que le programme attend 4/5s pour afficher le tout. Il ne veut pas afficher progressivement lettre par lettre, alors que TexteCode.insert est bel et bien dans la boucle.
    Merci

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

    Ouvrez un tuto. au chapitre tkinter! Vous y apprendrez ce qu'est un callback et pourquoi on évite de les bloquer avec des time.sleep... et comment réaliser des "animations".

    - W

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Ouvrez un tuto. au chapitre tkinter! Vous y apprendrez ce qu'est un callback et pourquoi on évite de les bloquer avec des time.sleep... et comment réaliser des "animations".

    - W
    J'avais déjà essayé avec after() mais en vain.
    J'ai tout de même ré-essayé, mais le résultat est le même : mon programme attend 4-5s et affiche tout d'un coup. Voici mon code :
    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
     
    for i in range(len(message)) :
                    TexteCode.after(1000, code_slow(message[i], rotor1, rotor2))
     
    def code_slow(message, rotor1, rotor2) :
        global message_code
     
        if (ord(message) < 65) or (ord(message) > 90) :
            message_code += message
        else :
            rang1 = ord(message) - 65
            rang2 = ord(rotor1[rang1]) - 65
            message_code += rotor2[rang2]
            TexteCode.delete(1.0, END)
            TexteCode.insert(1.0, message_code)
    Je ne comprends vraiment pas pourquoi ça ne fonctionne pas. Normalement, pour chaque lettre, la fonction code_slow() la code, l'ajoute à ma chaîne 'message_code', supprime ce qui était écrit précédemment, et remplace par ma nouvelle chaîne 'message_code' qui contient la lettre récemment codée. Puis ça recommence avec la lettre suivante.
    Merci de bien vouloir m'éclairer please

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

    Déjà en écrivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
             TexteCode.after(1000, code_slow(message[i], rotor1, rotor2))
    La fonction code_slow avec ses paramètres sera appelée immédiatement et c'est son retour (i.e. None) que vous passez en paramètre à vous demandez à TexteCode.after.

    Puis si vous écrivez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
             for i in range(len(message)) :
                    TexteCode.after(1000,...)
    vous demandez à tkinter d'appeler #len(message) fonctions presque en même temps (dans 1s.).

    Vous écrivez des lignes de code sans trop comprendre ce que çà va faire.
    Quand je vous propose d'ouvrir un tuto. c'est pas pour que vous y cherchiez une solution pour faire fonctionner votre programme. Mais pour que vous l'oubliez pendant 2/3 jours, histoire de voir les implications de ce type de programmation (sur comment on code).

    - W

Discussions similaires

  1. Affichage label checkbox dans zone de texte!
    Par maestro982 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 14/05/2012, 22h43
  2. [AC-2003] Texte par défaut dans zone de liste modifiable
    Par Shankara dans le forum IHM
    Réponses: 2
    Dernier message: 10/03/2012, 20h08
  3. Mettre valeur 0 par défaut dans zone de texte
    Par steph1911 dans le forum IHM
    Réponses: 1
    Dernier message: 19/01/2012, 04h31
  4. affichage icone dans zone de texte
    Par argon dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 15/01/2009, 10h41
  5. Problème : Affichage NULL dans zones de textes
    Par tssi555 dans le forum VB.NET
    Réponses: 7
    Dernier message: 11/08/2008, 13h46

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