Tcl/Tk, kurz gefasst
Die Programmiersprache Tcl/Tk besteht aus der leicht erlernbaren Programmiersprache Tcl und der Widget-LibraryTk. Tcl/Tk (ausgesprochen: "Tickel-Tikej") erlaubt unter anderem die höchst einfache und effiziente Programmierung von grafischen Benutzeroberflächen. Der Programmcode wird von einem Interpreterausgeführt, der für Linux, verschiedene andere Unixbetriebssysteme, Windows, MacOS und OS/2 verfügbar und freie Software ist.
Viele Programme unter Unix lassen sich wunderbar von der Kommandozeile aus bedienen, aber leider muss man sich dafür oft eine Menge merken und hat nach ein paar Tagen seine mühsam erlernten Kommandos schon wieder vergessen. Da kann es hilfreich sein, sich ein kleines Progrämmchen zu stricken, das interaktiv die gewünschten Einstellungen abfragt und die lästige Kommandozeile selbst zusammen baut.
Ein hervorragender Kandidat für ein solches vorgeschaltetes Frontend ist Povray, ein Programm zur Erzeugung photorealistischer Bilder [1,2]. Es ist sehr mächtig und beherrscht eine unübersehbare Anzahl von Optionen. Wer damit jedoch – wie ich – nur ab und zu selbst gestaltete 3D-Bilder erzeugt, hat jedesmal wieder seine liebe Not, heraus zu bekommen, wie Povray zu bedienen ist.
Im Dschungel der Optionen
Zwar hilft man povray weiter, trotzdem dauert es geraume Zeit, bis man selbst die allereinfachsten Optionen nachgeschlagen hat.
Wollen Sie Povray auffordern, Ihre Datei mit der Szenenbeschreibung zu rendern, so tun Sie das durch die Eingabe von
povray +Iszenenbeschreibungsdatei +Obilddatei
Falls Sie nicht die von Povray gewählte Bildgröße übernehmen, sondern eine andere festlegen möchten, können Sie das mit
povray +Iszenenbeschreibungsdatei +Obilddatei +Wbildbreite +Hbildhöhe
Das interaktive Zusammenstellen dieser Kommandozeile mit Hilfe von Tcl und die Übergabe an das Programm povray zum Rendern lernen Sie im heutigen Teil dieser Tcl-Einführung.
Am Anfang war der Interpreter
In Teil 1 [7] haben Sie den Interpreter für Tcl/Tk auf der Kommandozeile gestartet und ihm dann Ihre Programmdatei zur Ausführung übergeben. Diesmal geht es eleganter zu: Der Interpreter soll vom Programm selbst gestartet werden. Dazu geben Sie dem Betriebssystem, also dem Linux-Kernel, in der ersten Zeile Ihres Programmcodes den Auftrag.
Dies geht allerdings nicht so einfach wie in einem Terminal. Dort läuft nämlich schon ein Interpreter – unter Linux ist es im Regelfall die bash. Übergeben Sie ihr einen Befehl zur Ausführung, so sucht sie in ihrem Pfad, also in den ihr bekannten Verzeichnissen ausführbarer Programme, nach einem Programm mit dem Namen, den Sie eingegeben haben. Erst wenn sie alle Verzeichnisse durchsucht und immer noch nichts gefunden hat, wird sie eine Fehlermeldung ausgeben.
Der Betriebssystemkern hat diese Möglichkeit der Suche nach ausführbaren Programmen nicht. Er ist daher darauf angewiesen, dass Sie ihm die genaue Stelle des auszuführenden Programms angeben.
Da diesmal keine Fensterelemente wie Buttons u.a. benötigt werden, brauchen Sie Tk, die Widget-Library von Tcl/Tk nicht. Statt der wish aus Teil 1 können Sie deshalb direkt die Tcl-Shell tclsh (sprich: "Tickelschell"), den Interpreter für Ihre Tcl-Befehle, starten.
Um die genaue Schreibweise und den Fundort der tclsh zu ermitteln, tippen Sie am besten in einem Terminal
which tclsh
ein, wobei Sie tclsh gegebenenfalls durch einen genaueren Namen wie z.B. tclsh8.0 ersetzen müssen, je nachdem, wie Sie (oder Ihr Distributor) sie installiert haben.
Prüfen können Sie dies, indem Sie tclsh gefolgt von einem Doppeldruck auf die Tab(ulator)-Taste eingeben. Die Antwort der bash werden alle möglichen Befehle sein, die mit tclsh beginnen: Eventuell haben Sie verschiedene Versionen der tclsh installiert. Das erkennen Sie an unterschiedlichen Versionsnummern am Ende von tclsh. Die aktuelle Version ist 8.3, aber die Beispiele in diesem Text sind alle mit wesentlich älteren Tcl-Versionen wie z.B. tclsh7.4 lauffähig.
which gibt den genauen Pfad des danach stehenden Programms aus. War die Antwort auf which tclsh z.B. /usr/bin/tclsh, so lautet die erste Zeile Ihres Programms
#!/usr/bin/tclsh
Diese Zeile, die den Interpreter starten soll, schreiben Sie in eine Datei und speichern diese unter dem Namen poff.tcl (für "povray für Faule"). Die Dateiendung .tcl ist zwar nicht nötig, hilft Ihnen aber zu erkennen, dass es sich um ein von Tcl zu interpretierendes Programm handelt.
Um Ihre Datei in ein Programm zu verwandeln, müssen Sie sie ausführbar machen. Das erreichen Sie durch folgende Eingabe in einem Terminal:
chmod +x poff.tcl
Sie könnten poff.tcl jetzt starten, es täte allerdings nichts, außer den Interpreter aufzurufen und sofort wieder zu beenden. Geben Sie ihm also Futter.



