In Windows-Systemen werden alle Funktionseinheiten (Buttons, Eingabefelder, etc.) als eigene Fenster erzeugt. Tk unterteilt diese nach ihrer Funktion in Klassen, wie Buttons, Labels, Scrollbars, etc. Die Syntax zum Erzeugen eines Fensters ist für alle Klassen gleich:
widgetclassname widgetpathname [resource1 value1 [resource2 ...] ]
Dabei ist widgetclassname das Tcl-Kommando welches mit dem Klassennamen des Tk-Widgets übereinstimmt (zb. button, label, etc.) und widgetpathname ein String der die Position des Widgets in der Baumhierarchie (s. u.) wiedergibt. Anschließend kann über Ressource-Value-Paare das Widget konfiguriert werden, indem mit -resourcename die Ressource bestimmt und einem Wert zugewiesen wird (eine sehr gute Übersicht über die verfügbaren Ressourcen bietet das Referenzhandbuch). Nach der Erzeugung eines Widgets kann es mit dem Befehl
widgetpathname configure resource1 value1 [ resource2 ...]
nachträglich wieder geändert werden.
Die einzelnen Fenster (Widgets) einer Applikation sind in einer baumartigen Struktur angeordnet. Als oberste Ebene dient das Toplevel-Window, welches alle anderen Widgets beinhaltet. Dieses Toplevel-Window ist ein direkter Nachfolger des Root-Windows und wird somit vom Window-Manager ( fvwm, olvwm, mwm etc.) mit einem Rahmen versehen (dekoriert), welcher über seine Steuerelemente Manipulationen an diesem Fenster gestattet (iconifizieren, vergrößern). Jedes Fenster besitzt somit ein Vaterfenster an dem es sich bezüglich seiner Ausrichtung orientiert, daher muß auf eine sinnvolle Gestaltung dieser Widgethierarchie geachtet werden um ein vernünftiges Layout zu erhalten.
In Abbildung 3.1 soll ein Beispiel den Aufbau einer Widgethierarchie verdeutlichen.
Figure: Beispiel für eine Widgethierarchie