![]() |
|||
| HSG |
|
Ein Ereignis ist eine Zustandsänderung (bzw. das Ausführen eines Kommandos) in einem Objekt, die mit einer Ereignisbehandlungsroutine verknüpft werden kann.
Die Ereignisbehandlungsroutine (callback) muss den formalen Parameter 'event' enthalten. Der Aufrufer - oft das System - setzt dann 'event' ein. 'event' enthält Informationen zum Ereignis.
from Tkinter import *
def callback(event):
print "clicked at", event.x, event.y
root = Tk()
frame = Frame(root,width=200,height=200)
frame.bind("<Button-1>",callback)
frame.place(x=0,y=0)
root.mainloop()
from Tkinter import *
def ein(event):
f.config(bg='white')
def aus(event):
f.config(bg='black')
root = Tk()
root.title('Event-Demo 2')
root.geometry('200x150')
f = Frame(root,width=50,height=50,bg='black')
f.bind('<Enter>',ein)
f.bind('<Leave>',aus)
f.place(x=50,y=50)
root.mainloop()
Programme werden oft gewohnheitsmäßig durch Schließen des Fensters beendet. Das gelingt aber nur, wenn notwendige 'Aufräumarbeiten' ordentlich erledigt werden.
import tkinter as tk
class View(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
# Callback
self.protocol("WM_DELETE_WINDOW",self.Halt) # Halt wird aufgerufen, wenn das 'X' gedrückt wird
# Fenster
self.title("WM_DELETE_WINDOW - Demo")
self.geometry('200x100+100+200')
# Button
self.bTaster = tk.Button(master=self, text="Taster")
self.bTaster.bind('<Button-1>',self.schalteEin)
self.bTaster.bind('<ButtonRelease>',self.schalteAus)
self.bTaster.place(x=70,y=35)
# Mainloop
self.mainloop()
def schalteEin(self,event):
print('ein') # DEBUG
def schalteAus(self,event):
print('aus') # DEBUG
def Halt(self): # Aufräumarbeiten
self.quit() # mainloop beenden
self.destroy() # Fenster beseitigen
# Hauptprogramm
view = View()