Ich hätte gerne einen anderen Titel für den Thread gewählt, aber da ich nicht weiß, wo ich meinen Fehler habe (oder nicht genau), fehlt mir natürlich auch der Titel...

Also, ich habe nachstehenden, kleinen Code, der nichts anderes macht, als einen Timer (Countdown) zu starten. Wenn dieser Fertig ist, möchte ich eine Meldung dazu ausgeben.
Der Countdown scheint auch gut zu funktionieren, ich sehe durch eine Ausgabe von "print 'fertig'" auch, dass es so ist.
Leider hängt aber die Sache mit der MessageBox...
Ich wäre sehr dankbar, wenn mir jemand einen Tip geben könnte, warum es nicht funktioniert.
Code: Alles auswählen
import Tkinter as ti
import tkMessageBox as tkm
import sys as s
import threading as th
class RootWin(object):
def __init__(self):
self.root = ti.Tk()
self.frame = ti.Frame(self.root)
self.lbl = ti.Label(self.frame, padx=15, pady=15, text="Please enter countdown time!")
self.entry = ti.Entry(self.frame)
self.btn_go = ti.Button(self.frame, padx=8, pady=8, text="Go!", command=self.countdown)
self.btn_exit = ti.Button(self.frame, padx=8, pady=8,text="Exit", command=self.exit_app)
self.frame.pack()
self.lbl.pack()
self.entry.pack(padx=15)
self.btn_go.pack()
self.btn_exit.pack()
self.root.mainloop()
def countdown(self):
try:
timetocount = float(self.entry.get())
print timetocount
t = th.Timer(timetocount, self.finito).start()
except:
tkm.showwarning(
"Error",
"Please enter proper value!\nExample:23 or 23.5"
)
def exit_app(self):
s.exit(0)
def finito(self):
print "Fertig"
# Diese tkMessageBox funktioniert nicht.
# Irgendwie hängt die Sache hier.
# ???
tkm.showwarning(
"DONE",
"Finished. Time expired!"
)
myApp = RootWin()