Tkinter und Zeit

Fragen zu Tkinter.
Antworten
PythonBoiiii
User
Beiträge: 10
Registriert: Dienstag 19. Februar 2019, 18:09

Hi zusammen. Ich habe eine kleines Problem.
Ich möchte, dass das folgende Script immer ein Wort ausgibt per GUI, sich dann selbst zerstört und anschließend erneut öffnet um das nächste Wort anzuzeigen. Und bis auf das nächste Wort funktioniert auch alles. Es wird nur eben immer das selbe Wort angezeigt. Woran liegt das?

Code: Alles auswählen

from tkinter import *
from tkinter.font import Font
import datetime
import time

now = datetime.datetime.now()
woerter= {
1: ["Wort 1"]
,2: ["Wort 2"]
,3: ["Wort 3"]
,4: ["Wort 4"]
,5: ["Wort 5"]
,6: ["Wort 6"]
,7: ["Wort 7"]
,8: ["Wort 8"]
,9: ["Wort 9"]
,10: ["Wort 10"]

//Ich habe das Programm nur in den ersten zehn Minuten einer Stunde benutzt, hab es aber auch an anderen Stellen wie z.B. 20 nach ausprobiert


}


def nachricht(zeit):
    root = Tk()
    root.geometry('1000x1000')
    lab1 = Label(root, text=woerter[int(datum)][1])
    lab1.pack()
    root.after(60000, root.destroy)
    root.mainloop()
    
def output():
    for datum in range(1, len(woerter)):
        nachricht(int(now.strftime("%M")))
        time.sleep(2)
output()


Danke!
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@PythonBoiiii: Es macht keinen Sinn irgendwelchen Code zu zeigen der nicht zu dem passt was Du im Beitrag schreibst. Dieses Programm zeigt gar nichts an. Die Funktion benutzt das Argument nicht und versucht stattdessen auf einen nicht vorhandenen Namen zuzugreifen.

Ausserdem wird es problematisch wenn die 60.000 Millisekunden nicht ganz eine Minute dauern oder etwas weniger als eine Minute und das ganze zu nah am tatsächlichen Minutenwechsel liegt.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
PythonBoiiii
User
Beiträge: 10
Registriert: Dienstag 19. Februar 2019, 18:09

Hi @__blackjack__,
Danke für deine Antwort. Tut mir leid, ich habe den Fehler mit dem Datum etc. behoben:

Code: Alles auswählen

from tkinter import *
from tkinter.font import Font
import datetime
import time

now = datetime.datetime.now()
woerter= {
1: ["Wort 1"]
,2: ["Wort 2"]
,3: ["Wort 3"]
,4: ["Wort 4"]
,5: ["Wort 5"]
,6: ["Wort 6"]
,7: ["Wort 7"]
,8: ["Wort 8"]
,9: ["Wort 9"]
,10: ["Wort 10"]


}


def nachricht(zeit):
    root = Tk()
    root.geometry('1000x1000')
    lab1 = Label(root, text=woerter[zeit][0])
    lab1.pack()
    root.after(60000, root.destroy)
    root.mainloop()
    
def output():
    for datum in range(1, len(woerter)):
        nachricht(int(now.strftime("%M")))
        time.sleep(2)
output()
Jedoch funktioniert das Ganze immer noch nicht, und spätestens nach zwei Minuten sollte es den Fehler mit den kleinen Zeitdifferenzen ja nicht mehr geben; ich habe mehrere Minuten gewartet, es hat nicht funktioniert.
Liebe Grüße
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@PythonBoiiii: Naja dann überleg doch mal welchen Wert `now` hat. Wenn der sich ändern soll, solltest Du den vielleicht ändern.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
PythonBoiiii
User
Beiträge: 10
Registriert: Dienstag 19. Februar 2019, 18:09

@__blackjack__ okay verdammt, ich stand wohl echt auf dem Schlauch...
Vielen Dank für deine Hilfe!
Antworten