2016-10-21 3 views
1

Ich dachte, ich würde ein laufendes Uhrprogramm machen. Ich habe diesen Code, der für das funktioniert, was ich möchte, aber ich möchte, dass es etwas Besonderes ist, und es in einem neuen Fenster ausgeben. Ich dachte an eine Nachrichtenbox, aber das würde dauerndes Schließen erfordern.Python laufende Uhr in separatem Fenster

Gibt es da einen Weg, oder sollte ich nur bei der Verwendung der Konsole bleiben?

x=0 
import datetime 
import time 
while x<10: 
    currentTime=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") 
    time.sleep(1) 
    print(str(currentTime)) 

EDIT: Dies ist, was ich habe jetzt aber das Fenster geht ganz über den Platz.

try: 
    from Tkinter import * 
except ImportError: 
    from tkinter import * 

import datetime 
import time 

x=0 
while x<10: 
    root = Tk() 
    prompt = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") 
    label1 = Label(root, text=prompt, width=len(prompt)) 
    label1.pack() 

    def close_after_1s(): 
     root.destroy() 

    root.after(1000, close_after_1s) 
    root.mainloop() 
+1

Wenn Sie ein neues Fenster öffnen möchten, wollen Sie etwas über Tkinter oder QT oder ein ähnliches GUI-Toolkit lernen – ForceBru

+0

Ich habe tkinter verwendet, um ein Meldungsfeld zu erstellen, das nach 1 Sekunde selbst zerstört, aber das verwendete zu viel CPU für die Uhr –

+0

wie über ein Fenster mit einem Etikett erstellen und das Etikett mit der aktuellen Zeit aktualisieren? – ForceBru

Antwort

2

Sie verpassen den Punkt Tk. Das Ganze ist eine Schleife (daher die Hauptschleife) und Sie zerstören und erstellen ein neues Fenster, daher überall.

Ich glaube, Sie wollen einfach nur etwas jede Sekunde aktualisieren:

from Tkinter import Tk,StringVar,Label 
import datetime 

def update(): 
    global prompt,root 
    prompt.set(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")) 
    root.after(1000, update) 

root = Tk() 
prompt = StringVar() 
label1 = Label(root, textvar=prompt, width=len(prompt.get())) 
label1.pack() 
update() 
root.mainloop() 

und mein Vorschlag ist, all dies in einer Klasse zu setzen. Google einige Tk Beispiele.