Seite 1 von 1

Tkinter und Zeit

Verfasst: Freitag 1. März 2019, 18:58
von PythonBoiiii
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!

Re: Tkinter und Zeit

Verfasst: Freitag 1. März 2019, 20:30
von __blackjack__
@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.

Re: Tkinter und Zeit

Verfasst: Freitag 1. März 2019, 22:02
von PythonBoiiii
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

Re: Tkinter und Zeit

Verfasst: Freitag 1. März 2019, 23:33
von __blackjack__
@PythonBoiiii: Naja dann überleg doch mal welchen Wert `now` hat. Wenn der sich ändern soll, solltest Du den vielleicht ändern.

Re: Tkinter und Zeit

Verfasst: Samstag 2. März 2019, 14:37
von PythonBoiiii
@__blackjack__ okay verdammt, ich stand wohl echt auf dem Schlauch...
Vielen Dank für deine Hilfe!