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 / Ereignisse
Autor: mk
16.03.2011 08:39:59
719
Ereignisse

Ein Ereignis ist eine Zustandsänderung (bzw. das Ausführen eines Kommandos) in einem Objekt, die mit einer Ereignisbehandlungsroutine verknüpft werden kann.

Beispiel 1

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

Beispiel 2

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

Beispiel 3

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

Links