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

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Einführung in Tcl/Tk, Teil 3
    Nachdem Sie im ersten Teil dieses Programmierkurses gesehen haben, wie einfach sich Buttons mit Tcl/Tk programmieren lassen, und im zweiten mehr über die Skriptsprache Tcl lernen konnten, werden Sie diesmal eine etwas aufwändigere grafische Oberfläche erstellen.
  • Einführung in Tcl/Tk, Teil 4
    In der vierten und letzten Folge dieser Tcl/Tk-Einführung fügen wir der in Teil drei entstandenen Steuerungsoberfläche für Povray Funktionalität hinzu und erwecken sie so zum Leben.
  • Einführung in Tcl/Tk, Teil 2
    Nachdem Sie im ersten Teil dieses Programmierkurses einen ersten Einblick in den Umgang mit Tcl/Tk gewinnen konnten, werden Sie diesmal tiefer in die Strukturen von Tcl eintauchen. Die dabei gewonnenen Fähigkeiten können Sie dazu verwenden, Kommandozeilenprogrammen eine intuitivere, auf Ihre persönlichen Bedürfnisse zugeschnittene Benutzerschnittstelle zu spendieren.
  • Es muss nicht immer Office sein
    Mit wenigen Handgriffen liefert Ihnen tk-brief Schriftstücke und Briefe von brillanter Qualität – und das ohne jegliche Installation eines Office-Pakets.
  • Adventskalender mit C++ und Qt
    Es müssen nicht immer Schokoladefigürchen sein: Ein Bilderadventskalender lässt sich auch als GUI-Programm gestalten und eignet sich hervorragend zum Einstieg in die C++-Programmierung.
Kommentare

Infos zur Publikation

LU 01/2015: E-Books im Griff

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

PCLinuxOS Version 2014.08 "FullMonty" Umstellung auf deutsch
Karl-Heinz Welz, 19.12.2014 09:55, 3 Antworten
Hallo, liebe Community, ich bin 63 Jahre alt und möchte jetzt nach Jahrzehnten Windows zu Linux...
ICEauthority
Thomas Mann, 17.12.2014 14:49, 2 Antworten
Fehlermeldung beim Start von Linux Mint: Could not update ICEauthority file / home/user/.ICEauth...
Linux einrichten
Sigrid Bölke, 10.12.2014 10:46, 5 Antworten
Hallo, liebe Community, bin hier ganz neu,also entschuldigt,wenn ich hier falsch bin. Mein Prob...
Externe USB-Festplatte mit Ext4 formatiert, USB-Stick wird nicht mehr eingebunden
Wimpy *, 02.12.2014 16:31, 0 Antworten
Hallo, ich habe die externe USB-FP, die nur für Daten-Backup benutzt wird, mit dem YaST-Partition...
Steuern mit Linux
Siegfried Markner, 01.12.2014 11:56, 2 Antworten
Welches Linux eignet sich am besten für Steuerungen.