Uhrzeit im Label aktualisieren

Fragen zu Tkinter.
Antworten
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Hallo,

wie bringe ich die Uhrzeit in einem Label zum "Laufen"?

Bei meinem Aufruf wird immer nur die Aufrufzeit angezeigt. :(

Code: Alles auswählen

lt = time.localtime()                                            
jahr,monat,tag,stunde,minute,sekunde = lt[0:6]
zeit = "%02i:%02i:%02i Uhr" % (stunde, minute, sekunde)

lbtime=Label(frAb,text=zeit)
lbtime.pack(expand=1,anchor=E,side=TOP)
Stephan
Christopy_ohne_login

Habs noch nicht benutzt, aber Timer dürft die gesuchte Funktionalität beinhalten.
Christopy
User
Beiträge: 131
Registriert: Montag 15. Dezember 2003, 22:39

Christopy_ohne_login hat geschrieben:Habs noch nicht benutzt, aber Timer dürft die gesuchte Funktionalität beinhalten.
Ne. Timer ruft die Funktion nur zeitverzögert auf. Aber bei den Threads ist man trotzdem auf der richtigen Spur...
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Hallo Leute,

Das mit den Thread war voll gut. Dadurch habe ich die Antwort in einem Buch (von Michael Weigend) :idea: gefunden :D
Das is ne voll funzende Digitaluhr:

Code: Alles auswählen

from time import *
from Tkinter import *
import thread


class Uhr:
    def __init__(self):
        self.fenster = Tk()
        self.zeit = StringVar()
        self.anzeige = Label(self.fenster,
                             textvariable=self.zeit,
                             font=("Arial",20))
        self.anzeige.pack()
        thread.start_new_thread(self.aktualisieren, ())
        self.fenster.mainloop()

    def aktualisieren(self):
        while True:
            self.zeit.set(strftime("%X"))
            sleep(1)

uhr = Uhr()
Stephan
Christopy
User
Beiträge: 131
Registriert: Montag 15. Dezember 2003, 22:39

Jo. Ansonsten hab ich hier noch was gefunden.
DER Olf
User
Beiträge: 283
Registriert: Mittwoch 24. Dezember 2003, 19:32

so ein zufall....
das wollte ich auchmal fragen, aber das programm hab ich dann nich mehr weitergeproggt...:)
Pythino
User
Beiträge: 41
Registriert: Montag 12. April 2004, 10:39
Kontaktdaten:

Geht es auch irgendwie, dass man diese Uhr unsichtbar macht?
Einfach nur das Tk-Fenster sparen, die Uhrzeit aber dennoch ausgeben?
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi Pythino,

wie meinst Du das?
Unsichtbar ausgeben?


Gruß

Dookie
lionking
User
Beiträge: 28
Registriert: Mittwoch 28. April 2004, 16:03

hi

ich glaub pythino meint die uhrzeit auf transparentem hintergrund, also ohne fenster?!

würde mich auch mal interresieren wie man sowas macht...
DER Olf
User
Beiträge: 283
Registriert: Mittwoch 24. Dezember 2003, 19:32

hm....ich denke mal mit Tkinter GAR NICHT: eventuell mit den Pmw, mit der CLX für C++ / Delphi geht es :lol: :lol:

mfg

Olf
Pythino
User
Beiträge: 41
Registriert: Montag 12. April 2004, 10:39
Kontaktdaten:

Ich meine, dass diese Uhr nur im Hintergrund existiert, aber nicht als Fenster angezeigt wird. Allerdings halte ich das für unmöglich...
Christopy
User
Beiträge: 131
Registriert: Montag 15. Dezember 2003, 22:39

@Pythino
Möglich ist es schon (einfach die Ausgabe und das Fenster weglassen), aber sinnvoll ist es eigentlich nicht. Was willst du mit einer Uhr die keiner sehen kann? Wenn Du irgendeine Zeit messen willst, ist es besser zwei Systemzeiten voneinander zu subtrahieren...

Um nur die Uhr zu zeichnen müsste man eine Fenster mit transparentem Hintergrund erzeugen. Afaik geht das weder mit TKinter noch mit wxWidgets. Unter Windows müsste man also direkt ein Fenster erstellen (hab ich aber noch nie gemacht...).
Pythino
User
Beiträge: 41
Registriert: Montag 12. April 2004, 10:39
Kontaktdaten:

Hi Christopy,
die Uhr soll nicht gesehen werden, weil ich um eine bestimmte Uhrzeit eine Funktion ausführen will, sei es das Öffnen eines Fensters, oder was auch immer.
Ich habe es schon so versucht wie du es sagst, aber geklappt hat es leider noch nicht :?
Christopy
User
Beiträge: 131
Registriert: Montag 15. Dezember 2003, 22:39

Hallo Pythino
Verstehe.
Das könntest Du tatsächlich mit Timer machen.
Pythino
User
Beiträge: 41
Registriert: Montag 12. April 2004, 10:39
Kontaktdaten:

Danke, allerdings ist dies nicht genau das, was ich suche.
Dieser Timer zählt ja nur einen Countdown, ich hätte aber gerne eine Uhrzeitausgabe.

Entweder stehe ich gerade total auf dem Schlauch, oder ich bin einfach zu doof:

Code: Alles auswählen

t = Timer(30.0, hello)
t.start() # after 30 seconds, "hello, world" will be printed
Timer ist nicht definiert, obwohl ich
timer und sicherheitshalber thread importiert habe :?
Christopy
User
Beiträge: 131
Registriert: Montag 15. Dezember 2003, 22:39

Code: Alles auswählen

import threading 
Ansonsten kannst Du doch ein wenig mit der Uhrzeit rumrechnen. Du bestimmst einfach die Differenz zwischen der aktuellen Uhrzeit und der Uhrzeit zu der die Funktion ausgeführt werden soll und übergibts das als Variable an Timer.


(btw mit wxWidget kann man unter Windows doch transparente Fenster erzeugen...)
Pythino
User
Beiträge: 41
Registriert: Montag 12. April 2004, 10:39
Kontaktdaten:

import threading funktioniert nicht, dafür aber from threading import*
:?
Und nun habe ich das Problem, dass die Konsole "abschmiert" beim Ausführen der eigentlichen Funktion :x
Antworten