Home / LinuxUser / 2000 / 04 / Einführung in Tcl/Tk, Teil 1

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Ein Kleid für die Kommandozeile

Einführung in Tcl/Tk, Teil 1

01.04.2000 Die Kommandozeile hat unbestritten ihre Vorteile. Doch manche Aufgaben lassen sich einfacher mit einer grafischen Benutzeroberfläche erledigen. Tcl/Tk ist ein wunderbares Tool, mit dem sich ohne großen Aufwand grafische Benutzeroberflächen erstellen lassen. Im ersten Teil dieser Einführung lernen Sie, wie man Buttons erstellt und mit ihrer Hilfe Befehle ausführt.

Tcl/Tk ist eine Kombination aus der Skriptsprache Tcl, die sehr einfach zu erlernen ist, und dem Toolkit Tk, mit dem sich spielend grafische Benutzeroberflächen, sogenannte GUIs ("Graphical User Interfaces"), zusammenbauen lassen.

Diese Einführung in Tcl/Tk (ehe Sie sich die Zunge brechen, sagen Sie einfach "Tickl-Tikej" dazu) soll Sie in die Lage versetzen, in Zukunft eigene GUIs zu schreiben. Nach ersten Schritten mit einer Knopfleiste zum Aufruf Ihrer Lieblingsprogramme tauchen Sie in Teil 2 tiefer in die Strukturen von Tcl ein, bevor Sie in Teil 3 noch mehr Möglichkeiten von Tk kennen lernen. Mit diesem Wissen ausgerüstet können Sie dann ein kleines Tool zur leichteren Benutzung von Povray, einem freien Raytracer, schreiben.

Programme wie Povray rufen förmlich danach, mit einer grafischen Oberfläche versehen zu werden, weil sie über jede Menge Kommandozeilenoptionen gesteuert werden, die sich Gelegenheitsnutzer oft nicht merken können. Da bietet es sich an, mit Tcl/Tk ein kleines Progrämmchen zu stricken, das die Kommandozeile per Mausklick zusammenbastelt.

Tcl wurde Ende der 80er Jahre von John Ousterhout in Berkeley an der University of California entwickelt. Später kam das Toolkit Tk dazu, um auch grafisch-interaktive Programme mit Tcl erstellen zu können. Ousterhout ging dann zu Sun, portierte Tcl/Tk auf fast alle bekannten Betriebssysteme und betreibt nun eine eigene Firma, Scriptics, die sich zum Ziel gesetzt hat, Tcl/Tk weiterhin als freie Software zu fördern, gleichzeitig aber kommerzielle Anwendungen darum herum zu erstellen und vor allem kommerziellen Support zu bieten.

Ihr Wunsch ist Befehl

Genug der Vorrede: Programmieren lernt man am Rechner, und so starten Sie doch einfach die wish (Abkürzung für "Windoing Shell"), den Tcl/Tk-Interpreter, in einem X-Terminal durch die Eingabe von

wish

Es öffnet sich ein kleines Fenster mit dem Titel wish, und im X-Terminal erscheint ein Prozentzeichen. Hiermit gibt die wish bekannt, dass sie nun auf Ihre Eingaben wartet.

Um mit einer grafischen Benutzeroberfläche zu kommunizieren, brauchen Sie "Schaltflächen", bei Tcl/TK Widgets genannt. Der Ausdruck widget kommt von "window" ("Fenster") und "gadget" ("Dingsbums") und bezeichnet somit ein "Fensterdings". Ein mögliches, und wohl auch das häufigste Widget, ist der gute alte Button. Von diesem erwarten Sie, dass er das tut, was Sie von ihm möchten, wenn Sie mit der Maus darauf klicken. Was dann passiert, soll er Ihnen schon durch seine Beschriftung mitteilen.

Mit Tcl/Tk ist dies besonders leicht, da ein Button einfach mit dem Befehl button .buttonname erzeugt wird. Seine Aufschrift und das, was er auf einen Mausklick hin ausführen soll, geben Sie ihm als Optionen mit auf sein Buttonleben. Damit heißt Ihre erste Zeile Tcl/Tk-Code also

button .beenden -text "Beenden" -command exit

Achten Sie bitte auf die Leerzeichen, und schreiben Sie mindestens jeweils eines. Mehrere schaden nicht. Wenn Sie die erste Zeile eingegeben haben, antwortet Ihnen die wish mit dem Ergebnis Ihrer Eingabe; hier ist es .beenden, der Namen des Buttons. Der Knopf selbst wird allerdings noch nicht angezeigt. Dazu dient eine zweite Zeile.

pack .beenden

In ihr wird der pack-Windowmanager dazu aufgefordert, im Fenster der wish Platz für den Button .beenden einzurichten. Für den Windowmanager sind alle Widgets Kinder des Top-Level-Widgets mit dem einfachen Namen "." ("Punkt"). Er macht das Top-Level-Widget gerade so groß, dass auch besagter .beenden-Button genau hinein passt. Tippen Sie also ruhig die zweite Zeile ein, ohne sich vom Dazwischenreden der wish gestört zu fühlen.

Das Fenster der wish verändert seine Größe und enthält jetzt einen Button mit der Aufschrift Beenden. Wenn Sie auf den Button klicken, verschwindet das Fenster. Da Sie dem Knopf für diesen Fall den Befehl exit mit gegeben haben, wird mit dem Programm auch der Interpreter beendet.

Abbildung 1: Ein Button erblickt das Licht der Welt

Jetzt sollen Sie aber beginnen, erste "bleibende Werte" zu schaffen, sprich ein Programm. Dieses können Sie mit der Zeit verändern und vergrößern; auf jeden Fall aber speichern und damit auch öfters laufen lassen. Öffnen Sie daher Ihren Lieblingseditor, und geben Sie darin die folgenden Zeilen ein:

button .beenden -text "Beenden" -command exit
pack .beenden

Speichern Sie die Datei beispielsweise unter dem Namen erstes.tcl, und starten Sie nun die wish, indem Sie sie mit dieser Datei als Argument aufrufen.

wish erstes.tcl

Wenn alles geklappt hat, müsste sie sich so verhalten, als hätten Sie diese Zeilen direkt eingegeben.

Fehler? Mögen wir nicht!

Die "Lieblingsbeschäftigung" einer Programmiererin besteht darin, zu verstehen, was sie falsch gemacht hat, warum der Interpreter "motzt" oder weshalb das Ergebnis des Programms so gar nicht dem entspricht, was sie eigentlich wollte. Häufig sind es einfach nur Schreibfehler, die die korrekte Ausführung verhindern. Lassen Sie mal vor dem Namen des Buttons den Punkt weg, wenn Sie den Packer anweisen, Platz zu schaffen:

button .beenden -text "Beenden" -command exit
pack beenden

Der Interpreter kann Ihr Programm nicht starten und wird meckern, dass er mit dem Argument beenden für den Packer unzufrieden ist (Abbildung 2). Er macht eine kurze Anmerkung zur Art des Fehlers; hier spuckt er noch einen Tipp zur richtigen formalen Syntax (also pack mit einer möglichen Option und mindestens einem Argument, die weiteren Argumente sind in ? eingeschlossen, also optional). Außerdem gibt er nach while executing die genaue Zeile aus, in der der Fehler aufgetreten ist, und benennt noch Datei und Zeilennummer.

Abbildung 2: Der Interpreter ist unzufrieden

Es kann aber auch sein, dass ein Fehler nicht schon beim Starten, sondern erst später im Programm erkennbar wird. Tcl/Tk öffnet dann ein Fenster, in dem es versucht, verständlich zu machen, wo es gerade hapert. Testen Sie dies, indem Sie das Kommando des Buttons falsch schreiben, beispielsweise so:

button .beenden -text "Beenden" -command exut
pack .beenden

Wenn Sie nun auf Ihren Beenden-Button klicken, dann erscheint ein Fenster mit dem Fehler (Abbildung 3). Genauere Informationen inklusive Zeilennummer und dem fehlerhaftem Code erhalten Sie durch Anklicken des "Stack Trace"-Buttons.

Abbildung 3: Fehler während der Programmausführung

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

280 Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...