30.12.2012 Aufrufe

Skript Tcl/Tk - Praktische Informatik / Datenbanken - Universität Kassel

Skript Tcl/Tk - Praktische Informatik / Datenbanken - Universität Kassel

Skript Tcl/Tk - Praktische Informatik / Datenbanken - Universität Kassel

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Kapitel 8 – Ereignisbehandlung 159<br />

Für Widgets auf oberster Ebene entfällt naturgemäß die Marke ., d. h.<br />

ein solches Widget, z. B. .t, mit Klasse Toplevel, hat nur die Liste<br />

.t Toplevel all<br />

d. h., der dritte Eintrag in den obigen Listen entfällt.<br />

8.5.2 Der Gebrauch von break in der Ereignisbehandlung<br />

Da der Widgetbezeichner in der Bindingsliste zuerst erscheint, kann man<br />

Widgets bequem ein spezielles Verhalten beibringen, das vom Klassenverhalten<br />

abweicht.<br />

Im folgenden Beispiel wird ein Eingabewidget für Telefonnummern<br />

angegeben, das – abweichend vom üblichen Verhalten von Eingabewidgets<br />

– nur Ziffern, den Bindestrich und die Rücktaste akzeptiert. Im Fall<br />

einer anderen Eingabe ertönt ein Piepston.<br />

Für dieses spezielle Verhalten binden wir das KeyPress-Ereignis an das<br />

Widget (valid.tcl):<br />

label .prompt -text "Phone Number:"<br />

pack .prompt -side left<br />

entry .phone<br />

pack .phone -side left<br />

bind .phone {<br />

if {![regexp "\[0-9\]|-|\b" "%A"]} {<br />

bell<br />

break<br />

}<br />

}<br />

Wichtig daran ist, neben dem Gebrauch eines regulären Ausdrucks, das<br />

Auftreten des break-Kommandos im Binding. Normalerweise wird mit<br />

break eine Schleife verlassen, hier jedoch beendet es alle weiteren

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!