Newbie GUI

Fragen zu Tkinter.
Antworten
Dixie

Sonntag 5. Januar 2003, 19:10

Hallo,

ich komme eigentlich aus der C++ und Java-Ecke und probiere jetzt ein bischen mit Python herum.

Wollte dazu ein kleines Progrämmchen zum Kennenlernen schreiben, und zwar eine, in einem Label dargestellte, Digitaluhr, habe jetzt aber das Problem, dass ich nicht weiß, wie ich die automatisierte Aktualisierung hinkriege.
Zur Zeit muß ich immer einen Aktualisierungsbutton betätigen. Ich hatte auch schon an Threads gedacht, dass wäre aber doch ein bischen viel Overhead, oder?

mein bisheriger Code:

Code: Alles auswählen

from time import *
from Tkinter import *

def getTime():

	global ltime
	
	tmptime = localtime()
	tmp2time = ""	
	
	for i in range(3,6):
		if tmptime[i]<10: tmp2time=tmp2time + "0"
		tmp2time=tmp2time + str(tmptime[i])
		if i!=5: tmp2time = tmp2time + ":"

	ltime.set(tmp2time)

tk = Tk()

frame = Frame(tk)
frame.pack(fill=BOTH)

ltime = StringVar()
getTime()

label = Label(frame,relief=RIDGE,textvariable=ltime)
label.pack()

button = Button(frame,text="Aktualisierung",command=getTime)
button.pack()

mainloop()
Danke
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Sonntag 5. Januar 2003, 20:34

Hallo!

Endlich wieder einer, der Großbuchstaben zu schätzen weiß ;-)

Die Idee mit einem Thread ist nicht schlecht und auch nicht zu kompliziert:

Code: Alles auswählen

from time import *
from Tkinter import *
import time,thread

ende = 0

def getTime():
   global ltime
   timestring = strftime("%H:%M:%S",localtime())  
   ltime.set(timestring)

def worker_thread():
   while not ende:
      getTime()
      time.sleep(0.1) # 1/10 Sekunde warten

def stopp():
   global ende
   ende = 1

tk = Tk()

frame = Frame(tk)
frame.pack(fill=BOTH)

ltime = StringVar()

label = Label(frame,relief=RIDGE,textvariable=ltime)
label.pack()

button = Button(frame,text="Stopp",command=stopp)
button.pack()

thread.start_new_thread(worker_thread,())

mainloop()
Ich hab' die Erstellung des Uhrzeit-Strings noch etwas vereinfacht. die Funktion strftime() kennst Du vielleicht von C/C++ her. Du kannst eigentlich davon ausgehen, dass es zu so ziemlich allen C-Funktionen bei Python eine Entsprechung gibt.

Jan
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Sonntag 5. Januar 2003, 23:03

Jepp, das ist denn doch mal was woran man lernen kann. Kurz, knapp, präzise. Kann man doch nicht meckern.

THX
Hans
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Montag 6. Januar 2003, 11:54

hans hat geschrieben:Jepp, das ist denn doch mal was woran man lernen kann. Kurz, knapp, präzise. Kann man doch nicht meckern.
Na, das geht ja runter wie Honig :D
Jan
Antworten