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 :

time.sleep() ne fonctionne pas comme souhaité


Sujet :

Python

  1. #1
    Membre régulier
    Avatar de Olivier_
    Profil pro
    Inscrit en
    mars 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2005
    Messages : 111
    Points : 124
    Points
    124
    Par défaut time.sleep() ne fonctionne pas comme souhaité
    Salut à tous,

    un petit soucis m'amène par rapport à la méthode sleep du module time.

    Un exemple tout bête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    from time import sleep
    print "a"
    sleep(5)
    print "a"
    Ceci fonctionne sans soucis, j'ai l'affichage d'un "a" puis un autre 5 secondes après.

    A partir de là, je me dis que j'utilise la chose comme il faut.
    Hop, je pars dans mon exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        def tricher(self, event = None):
            self.boutons[self.randI][self.randJ].config(relief=SUNKEN)
            sleep(5)
            self.boutons[self.randI][self.randJ].config(relief=RAISED)
    Et là, ça ne fonctionne pas, la modification du style de mon bouton ne s'effectue pas :/

    Si j'enlève le sleep(5) et la ligne qui suit, ça fonctionne parfaitement, le relief est modifé et le reste.

    Si vous aviez une piste, ça m'aiderait !

    (Je n'ai aucune erreur de l'interpréteur, le module est chargé de la même manière que dans le 1er exemple, lorsque je déclenche l'évenement appelant tricher(), "l'appli" bloque 5 secondes sans rien faire et retourne à la normale...

    merci

  2. #2
    Membre régulier
    Avatar de Olivier_
    Profil pro
    Inscrit en
    mars 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2005
    Messages : 111
    Points : 124
    Points
    124
    Par défaut
    J'ai trouvé autre chose (avec Tkinter que j'utilise ici) pour faire la même chose.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        def tricher(self, event = None):
            "Découvre pendant un court laps de temps la case à trouver"
            self.boutons[self.randI][self.randJ].config(relief=SUNKEN)
            self.boutons[self.randI][self.randJ].update()
            self.fen.after(30, self.boutons[self.randI][self.randJ].config(relief=RAISED))
    Ca fait donc ce que je veux avec un module de moins
    Mais si vous avez l'explication du pourquoi du comment du time.sleep() je prend

  3. #3
    Membre régulier
    Avatar de Olivier_
    Profil pro
    Inscrit en
    mars 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2005
    Messages : 111
    Points : 124
    Points
    124
    Par défaut
    En fait, en ajoutant le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    self.boutons[self.randI][self.randJ].update()
    avant le sleep(5), ça fonctionne.
    Pour la petite anecdote

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Quel que soit le GUI la mise à jour de celui-ci ne s'effectue généralement qu'après tout ton traitement événementiel.
    Il faut donc forcer la mise à jour à l'intérieur de ton gestionnaire d'événements pour ce cas.
    Boost ftw

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

Discussions similaires

  1. [AC-2003] IsNull ne fonctionne pas comme souhaité
    Par Dermochelys dans le forum VBA Access
    Réponses: 2
    Dernier message: 25/09/2009, 16h09
  2. la fonction Sleep() ne fonctionne pas
    Par zaksaade dans le forum C++
    Réponses: 6
    Dernier message: 21/04/2007, 14h59
  3. requete qui ne fonctionne pas comme je shouterais
    Par domino_dj dans le forum Requêtes
    Réponses: 1
    Dernier message: 04/04/2007, 13h27
  4. [PopupControl] Affichage pas comme souhaitée
    Par Guigui_ dans le forum wxPython
    Réponses: 3
    Dernier message: 23/11/2006, 09h28
  5. un if qui ne fonctionne pas comme je veux
    Par Kelly182 dans le forum Access
    Réponses: 4
    Dernier message: 27/07/2006, 16h12

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