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 :

Horloge digitale bloquée.


Sujet :

Tkinter Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 27
    Points : 16
    Points
    16
    Par défaut Horloge digitale bloquée.
    Bonjour

    j'ai trouvé un petit exemple ( je debute...) qui est supposé fonctionner ( une horloge digitale ecrite en python mais qui n'evolue pas....et je ne comprends pas pourquoi !!!
    le 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
    16
    17
    18
    19
     
    # -*- coding: Latin-1 -*-
    from Tkinter import *
    import time
    root = Tk()
    time1 = ' '
    clock = Label(root, font('times', 20 ,'bold'), bg="green")
    clock.pack(fill=BOTH, expand=1)
     
    def tick():
        global time1
        #get local time from PC
        time2 = time.strftime('%H:%M:%S')
        if time2 != time1:
            time1=time2
            clock.config(text=time2)
            clock.after(200, tick)
    tick()
    root.mainloop()
    Un ou oune "pythonisse' qui peut m'expliquer...merci d'avance

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    Simple, après un délai de 200 millisecondes, les dates sont les mêmes, donc tu ne reprogrammes pas l'appel à tick(). Voilà un code qui devrait fonctionner (pas testé, note la différence d'indentation)
    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
    # -*- coding: Latin-1 -*-
    from Tkinter import *
    import time
    root = Tk()
    time1 = ' '
    clock = Label(root, font('times', 20 ,'bold'), bg="green")
    clock.pack(fill=BOTH, expand=1)
     
    def tick():
        global time1
        #get local time from PC
        time2 = time.strftime('%H:%M:%S')
        if time2 != time1:
            time1=time2
            clock.config(text=time2)
        clock.after(200, tick)
    tick()
    root.mainloop()

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    Arrrrgh !!!!
    Oui, bien sur ...et bien vu !!!
    je me suis piégé moi-meme avec l'indentation !!!
    Merci pour le deplantage

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    J'aimerai faire excatement la meme chose mais en changeant le title de de root. Est-ce possible? Je ne suis pas familier avec tKinter et tout ce que j'ai essayé a été un echec.

    Le but étant d'avoir mon horloge dans la barre des fenêtres de windows tout en utilisant un autre programme !?

  5. #5
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Sur le code de alcofribas :

    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
    import Tkinter
    import time
     
    def tick():
        global time1
        time2 = time.strftime('%H:%M:%S')
        if time2 != time1:
            time1=time2
            var.set(time1)
            root.title(var.get())
        clock.after(200, tick)
     
    root = Tkinter.Tk()
    var = Tkinter.StringVar()
    time1 = ' '
    clock = Tkinter.Label(root, bg="green")
    clock.pack(fill=Tkinter.BOTH, expand=1)
    tick()
    root.mainloop()
    Pour ce qui est du Le but étant d'avoir mon horloge dans la barre des fenêtres de windows tout en utilisant un autre programme !? tu dois utiliser thread pour tick.

    Edit : Par contre je pense que tu devrais faire un nouveau sujet la prochaine fois.

    Bon code.

    Et re edit pour la class variable Tkinter et les threads

    @+
    Merci d'utiliser le forum pour les questions techniques.

  6. #6
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Re Bonjour,

    Le même sans la class variable et avec threading.

    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
    import time
    import threading
     
     
    class tick(threading.Thread):
        def __init__(self, master):
            threading.Thread.__init__(self)
            self.time1 = ' '
            self.Terminated = False
            self.master = master
        def run(self):
            while not self.Terminated:
                self.time2 = time.strftime('%H:%M:%S')
                if self.time2 != self.time1:
                    self.time1=self.time2
                    self.master.title(self.time1)
                    self.master.update()
        def stop(self):
            self.Terminated = True
     
    def Intercepte():
        client.stop()
        root.destroy()
     
    root = Tkinter.Tk()
    root.protocol("WM_DELETE_WINDOW", Intercepte)
    Tkinter.Text(root, bg="green").pack(fill=Tkinter.BOTH, expand=1)
    client = tick(root)
    client.run()
    Sur ce si tu as une autre question pense a ouvrir un sujet.

    @+
    Merci d'utiliser le forum pour les questions techniques.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup . Je vais etudier cela en détail. J'étais très loin de pouvoir y arriver seul je pense. Désolé pour le spam. Je pensais que c'était approprié sur le sujet. J'ouvrirai un autre topic si j'ai besoin de précisions.

    Edit : magnifique ! Cela marche comme un charme. Je n'ai plus qu'à étudier une semaine cette fonction pour comprendre comment marche le threading ^^.

Discussions similaires

  1. Horloge digitale Tkinter
    Par Meets dans le forum Tkinter
    Réponses: 2
    Dernier message: 10/05/2010, 17h41
  2. création horloge digitale
    Par moha1984 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 23/08/2008, 13h19
  3. Horloge digitale en AS
    Par thomas3347 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 11/05/2008, 16h38
  4. [horloge] conflit caractère / timer
    Par JeanJean dans le forum C
    Réponses: 10
    Dernier message: 09/05/2003, 23h47
  5. [VB6] [Interface] Horloge 7 segments
    Par selenay dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 07/10/2002, 16h15

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