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()