Tkinter Threads Animation
Verfasst: Donnerstag 5. Januar 2006, 20:15
Hallo!
Habe folgendes Programm als Beispiel für ein Problem mit Threads in Zusammenhang mit Tinter:
Frage:
Warum läuft die Animation nicht in einem durch (so wie es eigentlich sein soll), wenn die Methode draw_line() in eigenen Thread läuft, sondern immer nur dann, wenn der Mauspfeil sich bewegt, nachdem das Fenster der Animation aktiviert wurde?
Was gibt es bei Tkinter im Zusammenhang mit Threads für Besonderheiten?
Habe folgendes Programm als Beispiel für ein Problem mit Threads in Zusammenhang mit Tinter:
Code: Alles auswählen
from time import *
from thread import *
from Tkinter import *
from Canvas import *
import sys
# Programm-Ende
def ende():
print "bye bye"
sys.exit(0)
# Funktion fuer Thread der alle 1,5 Sekunden etwas auf die Standartausgabe ausgibt
def show():
print "Start Thread"
for i in range(20):
print "i:", i , "Time:" , time(), "ThreadID:", get_ident()
sleep(1.5)
print "Ende Thread"
return
# Funktion zum Zeichnen einer Linie
def draw_line():
for i in range(10):
l = Line(cv, 20 * i, 80, 90, 100, fill="#000000")
#cv.update()
sleep(1)
return
################## Tkinter ###################
# Hauptfenster erzeugen
hauptfenster = Tk()
# Canvas erzeugen
cv = Canvas(hauptfenster, width = 200, height=170)
cv.pack()
# Knopf
bende = Button(cv, text = "Ende" , command = ende)
wende = Window(cv, 200, 170, anchor="se" , window = bende)
start_new_thread(draw_line,())
print "Ende Hauptprogramm", "ThreadID:", get_ident()
start_new_thread(show,())
hauptfenster.mainloop()
Frage:
Warum läuft die Animation nicht in einem durch (so wie es eigentlich sein soll), wenn die Methode draw_line() in eigenen Thread läuft, sondern immer nur dann, wenn der Mauspfeil sich bewegt, nachdem das Fenster der Animation aktiviert wurde?
Was gibt es bei Tkinter im Zusammenhang mit Threads für Besonderheiten?