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 :

Exécution des modules time et tkinter [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 67
    Par défaut Exécution des modules time et tkinter
    Bonjour à tous,

    J'ai créé une fenêtre avec tkinter.
    Je souhaite cette fenêtre se ferme automatiquement au bout de 3 secondes.
    J'ai donc compulsé le module time et j'ai écris ceci :
    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
     
    from tkinter import*
    from time import*
     
    def Décompteur():
        D=time() # Le temps à 0
        A=0
        X=0
        while X<3:
            A=time() # Le temps à l'instant donné
            X=A-D # La durée écoulée
     
    X=10
     
    fen=Tk()
    fen.title("Capitaux")
    fen.wm_attributes('-topmost',1)
    texte=Label(fen,text="Joueur 1: "+str(X)+" euros.")
    texte.pack()
     
    Décompteur()
     
    fen.destroy()
    Mais cela ne fonctionne pas, pourtant ma fonction Décompteur, elle, fonctionne correctement
    En retirant fen.destroy(), j'ai remarqué que ma fenêtre s'affichait après que ma fonction soit exécutée, alors que normalement cela doit suivre cette ordre:

    -Création de la fenêtre
    -Affichage de la fenêtre
    -Temporisation de 3 secondes
    -Destruction de la fenêtre

    Je n'ai pas mis de fen.mainloop() car je n'ai pas d’interactions à faire avec la fenêtre.

    Je remercie par avance ceux qui auront consacré un peu de leurs temps pour mon soucis

  2. #2
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Citation Envoyé par Leododo Voir le message
    Je n'ai pas mis de fen.mainloop() car je n'ai pas d’interactions à faire avec la fenêtre.
    Bonsoir,
    Pour "démarrer" tkinter le mainloop est obligatoire! Avant ce "démarrage" le gestionnaire de fenêtre n'est pas en action!!!

    Clodion

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 67
    Par défaut
    Quand je mets fen.mainloop(), c'est au tour de mon décompteur d'être oublié.
    Ma fenêtre s'affiche mais elle est "en attente d'une réponse" (c'est ce que j'ai compris du mainloop) donc ma fonction décompteur ne s’exécute pas
    Et donc ma fenêtre ne se ferme pas au bout des 3 secondes :/
    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
     
    from tkinter import*
    from time import*
     
    def Décompteur():
        D=time() # Le temps à 0
        A=0
        X=0
        while X<3:
            A=time() # Le temps à l'instant donné
            X=A-D # La durée écoulée
     
    X=10
    fen=Tk()
    fen.title("Capitaux")
    fen.wm_attributes('-topmost',1)
    texte=Label(fen,text="Joueur 1: "+str(X)+" euros.")
    texte.pack()
    fen.mainloop() #
     
    Décompteur()
     
    fen.destroy()

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

    tkinter est un GUI qui demande/ou permet de connaître la programmation "pilotée par les événements".
    Comme ce n'est pas intuitif, impossible de se lancer dans ce type de programmation sans avoir lu un tuto pour se familiariser avec les bases.
    Lisez le post. Vous y trouverez "comment faire" votre fonctionnalité avec tkinter i.e. en utilisant after et after_cancel.

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

  5. #5
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2013
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 485
    Par défaut
    Pour ton problème je regarderais la fonction "after".

    Genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    from tkinter import*
    fen=Tk()
    fen.title("Capitaux")
    fen.wm_attributes('-topmost',1)
    texte=Label(fen,text="Joueur 1: "+str(X)+" euros.")
    texte.pack()
    fen.after(3000, fen.destroy)
    fen.mainloop()

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 67
    Par défaut
    Pour ton problème je regarderais la fonction "after".
    Vous y trouverez "comment faire" votre fonctionnalité avec tkinter i.e. en utilisant after et after_cancel.
    Merci à vous deux
    Je me suis penché sur cette commande dans le livre de Swinnen.

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

Discussions similaires

  1. Cartographie de l'exécution des modules importés
    Par DrWaste dans le forum Général Python
    Réponses: 2
    Dernier message: 21/10/2011, 09h43
  2. exécution des fichiers index.php
    Par berry dans le forum Apache
    Réponses: 4
    Dernier message: 20/12/2004, 20h29
  3. Réponses: 2
    Dernier message: 02/11/2004, 06h52
  4. Recherche des dépendances des modules
    Par slowpoke dans le forum Mandriva / Mageia
    Réponses: 9
    Dernier message: 11/12/2003, 08h49
  5. Temps d'exécution des instructions FPU
    Par ubi dans le forum Assembleur
    Réponses: 2
    Dernier message: 24/10/2003, 18h39

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