next up previous contents index 6264666870
Next: 9. Anwendungsfenster Up: 8. Ereignisse (Events) und Previous: 8.4 Instanzen- und Klassenbindungen   Contents   Index

8.5 Protokolle

Zum Schluss noch ein paar Worte zum Thema Protokolle. Es gibt bei Tkinter die Möglichkeit, neben event handlers auch protocol handlers einzurichten. Protokolle beziehen sich auf die Interaktion zwischen der Anwendung und dem Windowmanager. An dieser Stelle wird nur ein einziges Beispiel gegeben. Das am häufigsten eingesetzte Protokoll heisst WM_DELETE_WINDOW, das definiert, was passieren soll wenn der User ein Fenster schliesst.

Benutzen Sie für die Installation des Protokoll-Handlers die Methode protocol des Widgets, das ein root- oder Toplevel-Window sein muss. Durch den Aufruf

widgetname.protocol('WM_DELETE_WINDOW', handler)

wird Tkinter das widget nicht mehr automatisch schliessen, sondern durch den Handler zum Beispiel eine Nachricht ausgeben. Um den Handler dann das Window schliessen zu lassen, muss die destroy-Methode des Fensters aufgerufen werden.

Beispiel:

#File: protocol1.py 

from Tkinter import *

import tkMessageBox 

def callback():

  if tkMessageBox.askokcancel('Quit', 'Wirklich aufhören?'):

    root.destroy() 

root=Tk()

root.protocol('WM_DELETE_WINDOW', callback) 

root.mainloop()

Window-Manager-Protokolle waren ursprünglich ein Teil des X-Window Systems. Sie werden in einem Dokument mit dem Namen Inter-Client Communication Conventions Manual oder ICCCM beschrieben. Weitere Protokolle sind zum Beispiel WM_TAKE_FOCUS und WM_SAVE_YOURSELF.


next up previous contents index 6264666870
Next: 9. Anwendungsfenster Up: 8. Ereignisse (Events) und Previous: 8.4 Instanzen- und Klassenbindungen   Contents   Index
Heiko Schroeder 2003-03-23