next up previous contents index 6264666870
Next: 8.1 Arten von Events Up: Programming Python Teil II: Previous: 7.6.2 Seltenere Optionen, die   Contents   Index


8. Ereignisse (Events) und Bindungen

Wie wir bereits vorher erwähnten, verbringt eine Tkinter-Applikation die meiste Zeit innerhalb einer Ereignisschleife (event loop), die durch eine mainloop-Methode initiiert wird. Ereignisse können durch verschiedene Aktionen ausgelöst werden, zum Beispiel:

Tkinter stellt einen sehr mächtigen Mechanismus zur Verfügung, der es Ihnen erlaubt, Ereignisse selbst zu kontrollieren. Für jedes Widget kann mit der bind-Methode eine Python-Funktion oder eine Methode an ein Ereignis gebunden werden.

Hier ein einfaches Beispiel:

#File: bind1.py

from Tkinter import * 

root=Tk() 

def callback(event):

   print 'clicked at', event.x, event.y 

frame=Frame(root, width=100, heigth=100)

frame.bind('<Button-1>',callback)

frame.pack() 

root.mainloop()

Lassen Sie dieses Programm laufen und klicken Sie in das auftretende Fenster. Jedesmal wenn Sie klicken, erscheint eine Message der Form 'clicked at 44 63' in dem Konsolenfenster.

Das Ereignis, das mit der Funktion callback verbunden wird, heisst hier <Button-1>. Solche Ereignisse sind als Strings zu übergeben und müssen eine bestimmte Syntax einhalten, die im wesentlichen aus den drei Bestandteilen modifier, type und detail besteht. Die Syntax lautet

<modifier-type-detail>

Das type-Feld ist das Wichtigste am Ganzen, denn es bezeichnet die Art des Events, das wir binden wollen. Welche Arten von Events es gibt, sehen wir gleich.

Die Felder modifier und detail geben zusätzliche Informationen und sind in vielen Fällen optional.

Die Bindung eines solchen Events an eine Methode, die als Handler bezeichnet wird, geschieht über den Aufruf

widgetname.bind(event,handler)

In unserem Beispiel wird der String '<Button-1>' an den Namen event der Funktion callback übergeben. Die Attribute des Events <Button-1> heissen self.x und self.y und werden von der callback-Funktion ausgegeben.



Subsections
next up previous contents index 6264666870
Next: 8.1 Arten von Events Up: Programming Python Teil II: Previous: 7.6.2 Seltenere Optionen, die   Contents   Index
Heiko Schroeder 2003-03-23