Trainingsuhr mit tkinter

Fragen zu Tkinter.
frcom
User
Beiträge: 17
Registriert: Sonntag 24. September 2017, 19:35

Trainingsuhr mit tkinter

Beitragvon frcom » Mittwoch 3. Januar 2018, 17:22

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!
Benutzeravatar
__deets__
User
Beiträge: 2155
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: Trainingsuhr mit tkinter

Beitragvon __deets__ » Mittwoch 3. Januar 2018, 17:27

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.
Sirius3
User
Beiträge: 7052
Registriert: Sonntag 21. Oktober 2012, 17:20

Re: Trainingsuhr mit tkinter

Beitragvon Sirius3 » Mittwoch 3. Januar 2018, 17:43

@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.
Benutzeravatar
wuf
User
Beiträge: 1368
Registriert: Sonntag 8. Juni 2003, 09:50

Re: Trainingsuhr mit tkinter

Beitragvon wuf » Donnerstag 4. Januar 2018, 19:59

Hi frcom

Hast weitere Versuche unternommen dein Projekt zum laufen zu bringen?

Gruss wuf :wink:
Take it easy Mates!

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder