Seite 1 von 1

Trainingsuhr mit tkinter

Verfasst: Mittwoch 3. Januar 2018, 17:22
von frcom
Hallo Allerseits!

Ich versuche mich gerade dabei eine Trainingsuhr in Python mit tkinter zu schreiben. Mein Skript sieht bisher wie folgt aus:

Code: Alles auswählen

from tkinter import ttk
from tkinter import *

fenster = Tk()
fenster.title("Trainingshelfer, Beine")

def weitercom():
	fenster2 = Tk()
	fenster2.title("Trainingsuhr")
	
	def start():
		#hier scheitere ich
		
	anzeige_1 = Label(fenster2, text=("Training: ", count_1))
	anzeige_2 = Label(fenster2, text=("Pause: ", count_2))
	
	count = dauer.get()

	pause_t = Label(fenster2, text="Pause: ")
	pause_a = Label(fenster2, text=(pause.get(), "sek."))
	dauer_t = Label(fenster2, text="Dauer: ")
	dauer_a = Label(fenster2, text=(dauer.get(), "sek."))
	sets_t = Label(fenster2, text="Anzahl Sätze: ")
	sets_a = Label(fenster2, text=sets.get())
	
	start_uhr = Button(fenster2, text="Start", command=start)
	exit_uhr = Button(fenster2, text="exit", command=fenster2.quit)
	
	pause_t.grid(row=0, column=0)
	pause_a.grid(row=0, column=1)
	dauer_t.grid(row=1, column=0)
	dauer_a.grid(row=1, column=1)
	sets_t.grid(row=2, column=0)
	sets_a.grid(row=2, column=1)
	
	anzeige_1.grid(row=3, column=0)
	anzeige_2.grid(row=4, column=0)
	
	start_uhr.grid(row=5, column=0)
	exit_uhr.grid(row=5, column=1)
	
	fenster2.mainloop()

info = Label(fenster, text="Selbsterklärend:")

#Schieberegler Dauer
label_dauer = Label(fenster, text="Belastungsdauer auswählen: ")
dauer = Scale(fenster, from_=10, to=70, orient=HORIZONTAL)
#Schieberegler Pause
label_pause = Label(fenster, text="Pausenlänge auswählen: ")
pause = Scale(fenster, from_=0, to=30, orient=HORIZONTAL)
#Schieberegler Sets
label_sets = Label(fenster, text="Sets auswählen: ")
sets = Scale(fenster, from_=1, to=10, orient=HORIZONTAL)

#Buttons
weiter = Button(fenster, text="weiter", command=weitercom)
exit = Button(fenster, text="Exit", command=fenster.quit)

label_dauer.grid(row=0, column=0)
dauer.grid(row=0, column=1)
label_pause.grid(row=1, column=0)
pause.grid(row=1, column=1)
label_sets.grid(row=2, column=0)
sets.grid(row=2, column=1)
weiter.grid(row=3, column=0)

fenster.mainloop()
Ich kann also über Schieberegler Dauer, Pause und Anzahl der Sätze einstellen, das wichtigste, die Uhr, bekomme ich aber irgendwie nicht hin. Ich habe das ganze über die time.sleep() Funktion versucht, aber da wird ja das Ganze Programm kurz angehalten (bzw. der Countdown stimmt dann einfach nicht), was ich natürlich nicht will... Über label.config() kann ich ja ein Label gezielt verändern, aber dieses Runterzählen bekomme ich einfach nicht hin....
Bitte um Denkanstöße und bedanke mich!

Re: Trainingsuhr mit tkinter

Verfasst: Mittwoch 3. Januar 2018, 17:27
von __deets__
Du musst die after-Funktion verwenden, die hier in gefuehlt 2000 Beitraegen erwaehnt und erklaert wird. Und dann musst du die aktuelle Zeit *abfragen* mit time.time(), da das Betriebssystem weder bei time.sleep noch bei after eine Garantie gibt, wie lange es wirklich wartet.

Re: Trainingsuhr mit tkinter

Verfasst: Mittwoch 3. Januar 2018, 17:43
von Sirius3
@frcom: daneben gilt noch, was auch Gefühlt drei mal täglich hier bemerkt wird: Benutze keine *-Importe, sondern `import tkinter as tk`. Es darf pro Programm nur ein `Tk`-Exemplar geben, weitere Fenster mit TopLevel erzeugen. Benutze keine globalen Variablen.

Re: Trainingsuhr mit tkinter

Verfasst: Donnerstag 4. Januar 2018, 19:59
von wuf
Hi frcom

Hast weitere Versuche unternommen dein Projekt zum laufen zu bringen?

Gruss wuf :wink: