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 :

Réglage d'un chronomètre


Sujet :

Tkinter Python

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 95
    Points : 80
    Points
    80
    Par défaut Réglage d'un chronomètre
    Bonsoir,

    J'aurai besoin de votre aide concernant le chronomètre que je viens de programmer.

    Alors mon chronomètre marche parfaitement, il y seulement une chose que j'aimerai faire.
    En effet, j'aimerai intégrer deux boutons, dont un qui déclencherait le commencement
    du compte à rebours et dont l'autre ferait revenir à l'état initiale (ici 9 secondes) le chronomètre dès qu'il affiche le mot "Fini''.

    Je vous mets mon code ci dessous :

    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
    from tkinter import*
    import tkinter as tk
     
     
    root = Tk()
    root.title("Test Chrono")
     
    counter = 9
     
    def counter_label(label):
      def count():
        global counter
        counter -= 1
        label.config(text=str(counter), font="Arial 20")
        label.after(1000, count)
        if counter < 0:
            label.config(text="Fini")
     
      count()
     
    label = tk.Label(root, fg="green")
    label.grid(row=5,column=0)
    counter_label(label)
     
    mainloop()
    Merci encore pour vos futures aides !

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

    Citation Envoyé par Iloyd Voir le message
    Alors mon chronomètre marche parfaitement
    Ajoutez un print(counter) après counter -= 1: vous devriez constater que çà continue de compter même après avoir affiché "Fini".

    Citation Envoyé par Iloyd Voir le message
    En effet, j'aimerai intégrer deux boutons, dont un qui déclencherait le commencement du compte à rebours et dont l'autre ferait revenir à l'état initiale (ici 9 secondes) le chronomètre dès qu'il affiche le mot "Fini''.
    Quelle difficulté rencontrez-vous pour écrire çà?

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

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 95
    Points : 80
    Points
    80
    Par défaut
    Bonsoir,

    Vous avez tout à fait raison ! Moi qui pensais que grâce à ma condition, la soustraction se serait arrêter.
    Je vais essayer de faire déterminer limite à cela.

    Concernant ma demande, j'au réussi à intégrer mes deux boutons, mais je ne sais pas comment je pourrai permettre l'enclenchement du chronomètre dès que j'appuie sur le bouton "Commencer" ou bien son "reset" en le faisant revenir à son état initiale.

    Voici le code mis à jour :

    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
    26
    27
    28
    29
    30
    31
    from tkinter import*
    import tkinter as tk
     
     
    root = Tk()
    root.title("Test Chrono")
     
    counter = 9
     
    def counter_label(label):
      button1 = Button(root, text="Recommencer", command = counter_label).grid()
      button2 = Button(root, text="Commencer", command = counter_label).grid()
      def count():
        global counter
     
        counter -= 1
        print(counter)
        label.config(text=str(counter), font="Arial 20")
        label.after(1000, count)
     
        if counter < 0:
            label.config(text="Fini")
     
     
      count()
     
    label = tk.Label(root, fg="green")
    label.grid(row = 5 , column =0)
    counter_label(label)
     
    mainloop()

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Iloyd Voir le message
    mais je ne sais pas comment je pourrai permettre l'enclenchement du chronomètre dès que j'appuie sur le bouton "Commencer" ou bien son "reset" en le faisant revenir à son état initiale.
    Déjà vous créez vos boutons juste avant l'appel à mainloop: dans la fonction, çà marche mais çà ne sert à rien. Puis vous virer le paramètre de la fonction (pour simplifier) qui est inutile.
    Enfin, vous allez lire la documentation d'.after_cancel, car c'est avec çà qu'on va pouvoir arrêter le décompte.
    note: le but ici n'est pas de coder à votre place mais de vous indiquer ce que vous devriez faire/comprendre pour vous en sortir tout seul. Après bien sûr, si vous ne vous en sortez pas, on verra...


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

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 95
    Points : 80
    Points
    80
    Par défaut
    Alors, j'ai pu lire la fiche sur le site web que vous m'avez donné, mais malgré avoir pris le wiget, je n'arrive pas à faire arrêter le décompte.

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    from tkinter import*
    import tkinter as tk
     
     
    root = Tk()
    root.title("Test Chrono")
     
    counter = 9
     
    def counter_label(label):
      def count():
        global counter
     
        counter -= 1
        print(counter)
        label.config(text=str(counter), font="Arial 20")
        label.after(1000, count)
     
     
        if counter < 0:
            label.config(text="Fini")
            label.after_cancel(count)
     
     
      count()
     
    label = tk.Label(root, fg="green")
    label.grid(row = 5 , column =0)
    counter_label(label)
    button1 = Button(root, text="Recommencer", command = counter_label).grid()
    button2 = Button(root, text="Commencer", command = counter_label).grid()
     
     
    mainloop()
    Peut - être que je n'ai pas appelé le bon (id) ou bien j'ai mal placé le wiget..

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Iloyd Voir le message
    Peut - être que je n'ai pas appelé le bon (id) ou bien j'ai mal placé le wiget..
    L'identifiant est retourné par .after.

    Ca pourrait donner un code 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    import tkinter as tk
     
    root = tk.Tk()
     
    timer_id = None
    count = 10
     
    def start_timer():
        global timer_id, count
     
        if count > 0:
            label ['text'] = count
            count -= 1
            timer_id = root.after(250, start_timer)
        else:
            timer_id = None
     
    def reset_timer():
        global timer_id, count
        if timer_id:
            root.after_cancel(timer_id)
            timer_id = None
        count = 10
        label ['text'] = count
     
    label = tk.Label(root, text=count)
    label.pack()
    tk.Button(root, text='start', command=start_timer).pack()
    tk.Button(root, text='reset', command=reset_timer).pack()
    tk.mainloop()
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 95
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    L'identifiant est retourné par .after.

    Ca pourrait donner un code 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    import tkinter as tk
     
    root = tk.Tk()
     
    timer_id = None
    count = 10
     
    def start_timer():
        global timer_id, count
     
        if count > 0:
            label ['text'] = count
            count -= 1
            timer_id = root.after(250, start_timer)
        else:
            timer_id = None
     
    def reset_timer():
        global timer_id, count
        if timer_id:
            root.after_cancel(timer_id)
            timer_id = None
        count = 10
        label ['text'] = count
     
    label = tk.Label(root, text=count)
    label.pack()
    tk.Button(root, text='start', command=start_timer).pack()
    tk.Button(root, text='reset', command=reset_timer).pack()
    tk.mainloop()
    - W
    D'accord je vois,

    Est - ce que vous pourriez me définir ce qu'est "time-id" et si vous auriez de la documentation pour moi par rapport à des choses intéressante sur Tkinter, je suis preneur !

    Merci !

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Iloyd Voir le message
    Est - ce que vous pourriez me définir ce qu'est "time-id" et si vous auriez de la documentation pour moi par rapport à des choses intéressante sur Tkinter, je suis preneur !
    Avec Python, une variable est définie par ce qu'on lui assigne.
    Côté tuto, le Swinnen est un bon début.

    - 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. [sqlplus] sauvegarder/restaurer réglages
    Par Benav dans le forum Oracle
    Réponses: 5
    Dernier message: 22/02/2005, 13h35
  2. Word : réglage automatique hauteur de cellules
    Par 120 dans le forum VBA Word
    Réponses: 2
    Dernier message: 16/02/2005, 09h26
  3. Comment détecter un changement du réglage de voume sonore ?
    Par mjlub dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 09/01/2004, 17h43
  4. Comment chronométrer une fonction
    Par 323 dans le forum Pascal
    Réponses: 3
    Dernier message: 19/03/2003, 20h24
  5. [MFC] Boîte de dialogue chronométrée
    Par mdriesbach dans le forum MFC
    Réponses: 5
    Dernier message: 18/02/2003, 12h40

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