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.

156<br />

Programmierung graphischer Benutzerschnittstellen mit <strong>Tcl</strong>/<strong>Tk</strong><br />

laut H+McL eine Grundregel für den Einsatz von Callbacks während der<br />

Konstruktion eines Widgets.<br />

Vorläufiger krönender Abschluß ist die toolbar_select-Routine.<br />

proc toolbar_select {win tool} {<br />

global tbInfo<br />

}<br />

if {$tbInfo($win-current) != ""} {<br />

set label "$win.tool-$tbInfo($win-current)"<br />

$label configure -relief raised<br />

}<br />

set label "$win.tool-$tool"<br />

$label configure -relief sunken<br />

set tbInfo($win-current) $tool<br />

if {$tbInfo($win-command) != ""} {<br />

set cmd [percent_subst %t \<br />

$tbInfo($win-command) $tool]<br />

uplevel #0 $cmd<br />

}<br />

Zunächst wird für ein bisher gesetztes Tool, ermittelbar aus<br />

$tbInfo($win-current), dessen Aussehen wieder auf „nicht-ausgewählt“<br />

(Relief oben) gesetzt. Das neu ausgewählte Werkzeug erhält<br />

dann das abgesenkte Aussehen und $tool wird als neue Wahl in<br />

tbInfo gesichert.<br />

Danach soll die mit dem Auswahlvorgang verbundene Callback-Routine<br />

ausgeführt werden, wobei zunächst der tool-Wert für %t in der<br />

Routine $tbInfo($win-command) substituiert werden muß. Diese<br />

so aufbereitete Routine wird dann auf oberster Ebene (uplevel #0),<br />

also im für Bindings üblichen globalen Kontext, aufgerufen.<br />

Damit haben wir gezeigt, wie man durch eigene Bindings ein neues<br />

Verhalten, hier das einer Radioleiste, erzeugen kann.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!