Home / LinuxUser / 2000 / 06 / Einführung in Tcl/Tk, Teil 2

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.

Die Kommandozeile wird selbstständig

Einführung in Tcl/Tk, Teil 2

Darf's auch etwas mehr sein?

Nun brauchen Sie eine Möglichkeit, die Eingabe des Nutzers mit einem von Ihnen gewählten Wert zu vergleichen. Dies können Sie mit dem Befehl string. Mit dem Argument match vergleicht er zwei Zeichenketten, die danach angegeben werden. Sind die Zeichenketten gleich, so ist sein Ergebnis eine 1, sind sie ungleich, so liefert er eine 0 zurück. Die genaue Befehlssyntax lautet:

string match erste_Zeichenkette
 zweite_Zeichenkette

Probieren Sie auch das beim Trockenschwimmen mit dem Interpreter aus:

%
% # zwei gleiche Zeichenketten
% string match j j
1
% string match ja ja
1
%
% # zwei ungleiche Zeichenketten
% string match j n
0
% string match ja j
0
%

Um den Befehl string in der if-Kontrollstruktur als Abfrage zu verwenden, müssen Sie ihn in eckige Klammern schreiben. Der Interpreter wertet zunächst den zwischen den Klammern stehenden Befehl aus und reicht dann das Ergebnis an if weiter. War es eine 1, so interpretiert das if dies als ja, kam eine 0 heraus, so wertet if das als nein.

Nun können Sie den Quellcode Ihres poff-Programms um die Abfrage erweitern. Die öffnende Klammer des Skripts, {, muss dabei in der selben Zeile wie das if stehen. Nur so erkennt der Interpreter das Skript als zweites Argument für if an. Das else wiederum muss sich mit der schließenden Klammer } auf einer Zeile befinden, um als Option von if akzeptiert zu werden.

puts "Möchten Sie die Bildgröße eingeben (j/n)?"
gets stdin bildgroesse
if { [ string match j $bildgroesse ] } {
   puts "Geben Sie bitte die Breite des Bildes ein"
   gets stdin bildbreite
   puts "Geben Sie bitte die Höhe des Bildes ein"
   gets stdin bildhoehe
   # Aufruf von povray mit Groessenangabe
} else {
   # Aufruf von povray ohne explizite Groessenangabe
}

Das macht dann …

Nun bleibt nur noch Punkt 5 auf der Liste: das Starten von povray – entweder mit Angabe der Bildgröße oder ohne.

Der Befehl exec kann alle ausführbaren Programme aufrufen, also auch das Programm povray. Als erstes Argument benötigt exec den Namen des auszuführenden Programms. Tcl startet dieses dann mit den restlichen Optionen. Der korrekte Aufruf lautet:

# Mit Groessenangaben:
exec povray +I$dateiname +O$bildname +W$bildbreite +H$bildhoehe &
# Ohne explizite Groessenangaben:
exec povray +I$dateiname +O$bildname &

Wenn Sie die if- und else-Skripte noch um den jeweiligen Povray-Aufruf ergänzen, haben Sie Ihr komplettes Programm fertig! Sie finden es vollständig in Listing 1 abgedruckt, die gelernten Befehle sind in Tabelle 1 noch einmal beschrieben. Experimentieren Sie damit, bevor Sie in Heft 08/2000 die letzte Folge unserer kleinen Programmierreihe erwartet.

Listing 1

#!/usr/bin/tclsh
# Vorstellung des Frontends
puts "Willkommen bei poff, dem interaktiven Povray-Frontend"
# Aufforderung an den Nutzer
puts ""
puts "Geben Sie bitte den Namen der zu rendernden Datei ein"
# Einlesen der Nutzer-Eingabe
gets stdin dateiname
# Erstellen des Namens für die Bilddatei
set bildname [ file rootname $dateiname ]
set bildname $bildname.tga
# Erfragen, ob Bildgroesse gewuenscht
puts "Möchten Sie die Bildgröße eingeben (j/n)?"
gets stdin bildgroesse
# Wenn Bildgroesse gewuenscht, dann erfragen
if { [ string match j $bildgroesse ] } {
   puts "Geben Sie bitte die Breite des Bildes ein"
   gets stdin bildbreite
   puts "Geben Sie bitte die Höhe des Bildes ein"
   gets stdin bildhoehe
   # Aufruf von povray mit Groessenangabe
   exec povray +I$dateiname +O$bildname +W$bildbreite +H$bildhoehe &
} else {
   # Aufruf von povray ohne Groessenangabe
   exec povray +I$dateiname +O$bildname &
}

Tabelle 1: Die verwendeten Tcl-Befehle

#!/usr/bin/tclsh Die Aufforderung an den Kernel, den Tcl-Interpreter zu starten
set <variablenname variableninhalt Variablendeklaration
puts zeichenkette Ausgabe der Zeichenkette im aufrufenden Terminal
gets stdin variablenname Entgegennahme der Tastatureingaben des Nutzers vom aufrufenden Terminal
file rootname dateiname Befehl zum Abschneiden der Dateinamenserweiterung in einem Dateinamen
if { abfrage } { skript } Kontrollstruktur, die das skript abhängig vom Ergebnis der abfrage abarbeitet oder nicht
if { abfrage } { skript 1 } else { skript 2 } Kontrollstruktur, die abhängig vom Ergebnis der abfrage entweder skript 1 oder skript 2 ausführt
string match zeichenkette1 zeichenkette2 Befehl zum Vergleich zweier Zeichenketten
exec programm optionen & Aufruf eines Unix-Programmes von Tcl aus

Wie geht's weiter?

Der dritte Teil in Heft 08/2000 widmet sich hauptsächlich den Gestaltungsmöglichkeiten von grafischen Benutzerschnittstellen ("GUIs") mit Tcl/Tk.

Glossar

Widget-Library

Funktionen zum Programmieren von Fensterelementen wie z.B. Buttons und Menüs.

Interpreter

Interpreter übersetzen das Programm jedesmal in Maschinencode, wenn es aufgerufen wird. Die Übersetzung wird nicht auf Dauer gespeichert.

rendern

Erstellen eines Bilds aus mathematischen Daten.

Prompt

Das Bereitzeichen einer Shell, an dem Sie erkennen, dass Sie jetzt einen Befehl aufrufen können.

&

Wenn Sie von einem Interpreter aus ein anderes Programm starten, ist er so lange blockiert, bis Sie das Programm wieder beendet haben. Das gilt sowohl für die bash, den Standardkommandozeileninterpreter unter Linux, als auch für Tcl. Sie können den Interpreter aber aktionsfähig halten, wenn Sie an den Programmaufruf ein & anhängen und das Programm damit "im Hintergrund" starten.

Infos

[1] Eine gute Einführung in Povray ist von Christian Perle im Linux-Magazin 04/1998 erschienen. Sie ist auch im WWW erhältlich:http://www.linux-magazin.de/ausgabe/1998/04/Povray/povray.html

[2] Falls Sie sich näher mit Povray beschäftigen möchten, bekommen Sie es hier: http://www.povray.org/

[3] Tcl/Tk ist zwar bei jeder Distribution dabei, im Source-Code können Sie es aber auch herunter laden bei: http://www.scriptics.com/

[4] John Ousterhout, der "Erfinder" von Tcl/Tk, hat selbst ein sehr lesenswertes Buch über Tcl/Tk geschrieben: Ousterhout, John K.: "Tcl und Tk", Addison-Wesley, Bonn 1995

[5] Wenn Sie schon über Tcl/Tk-Grundkenntnisse verfügen, die Sie auf sinnvolle Weise vertiefen möchten, ist folgendes Buch zu empfehlen: Harrison, Mark und McLennan, Michael: "Effektiv Tcl/Tk programmieren", Addison-Wesley, Bonn 1998

[6] Online-Infos bekommen Sie unter anderem bei: http://www.sco.com/Technology/tcl/Tcl.html

[7] Der erste Teil dieser Programmiereinführung ist erschienen im Linux-Magazin 04/2000, S. 120--124

Der Autor

Sibylle Nägle studiert Maschinenbau in Kassel, hat aber immer größere Schwierigkeiten, ihre Zeit nicht am Rechner und mit Linux zu verbringen. Tcl/Tk ist ihre Lieblingssprache, der Emacs ihr Lieblingseditor, und ihre Lieblingsmusik wird vom Penguin Cafe Orchestra oder ihr selbst gemacht.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

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...