TkInter Material Grundlagen Templates Ereignisse Button Entry Label Canvas Welt-Bild-Transformation Text Dialoge Optionmenu Listbox Fenster Toplevel Timer Threads Pack Drag&Drop
Pfad: Startseite / Fächer / Informatik / Python / TkInter / Timer
Autor: mk
14.01.2009 15:45:47
1561
Timer

Warnung

Tkinter ist nicht thread-sicher, dh. der Versuch, aus einem thread auf widgets zuzugreifen führt früher oder später zu einem Absturz.

after - Timer in Tkinter

Die meisten Widgets verfügen über eine Methode after(ms,func[,argl[,..]]), die nach ms Millisekunden die Funktion func aufruft. Eventuelle Parameter werden in eine optionalen Liste argl übergeben. after gibt eine id zurück, über die mit after_cancel(id) der after-Aufruf abgebrochen werden kann.

Beispiel - quick and dirty

# -*- coding: iso-8859-1 -*-
# mk, 14.1.09

def ein(event):
    global y
    y=y-dy

def aus(event):
    global y
    y=y+dy

# view
from Tkinter import *
f = Tk()
f.title('Oszilloskop mit Taster')
f.geometry('800x600')
c = Canvas(master=f, width=800, height=600)
c.place(x=0,y=0)
b = Button(master=f,text='Taster')
b.place(x=10,y=10)
b.bind('<Button-1>',ein)
b.bind('<ButtonRelease>',aus)

# control
x = 10
y = 60
dy = 20
xalt = x

def tuewas():
    global x,y,xalt,c
    xalt = x
    x = x + 1
    if x >= 790:
        y=y+3*dy
        xalt = 20
        x = 20
    c.create_line(xalt,y,x,y)
    c.after(20,tuewas)              # rekursiver Aufruf

# GUI starten
c.after(0,tuewas)                   # erster Start
f.mainloop()

Links

Valid XHTML 1.0!