Tcl-Tk - Kurzanleitung
Tcl ist eine verkürzte Form von Tool Command Language. John Ousterhout von der University of California in Berkeley hat es entworfen. Es ist eine Kombination aus einer Skriptsprache und einem eigenen Interpreter, der in die Anwendung eingebettet wird, die wir damit entwickeln.
Tcl wurde ursprünglich für Unix entwickelt. Es wurde dann auf Windows, DOS, OS / 2 und Mac OSX portiert. Tcl ist anderen Unix-Shell-Sprachen wie Bourne Shell (Sh), C Shell (csh), Korn Shell (sh) und Perl sehr ähnlich.
Ziel ist es, Programmen die Möglichkeit zu geben, mit anderen Programmen zu interagieren und als einbettbarer Dolmetscher zu fungieren. Obwohl das ursprüngliche Ziel darin bestand, die Interaktion von Programmen zu ermöglichen, finden Sie in Tcl / Tk vollwertige Anwendungen.
Eigenschaften von Tcl
Die Merkmale von Tcl sind wie folgt:
Reduzierte Entwicklungszeit.
Leistungsstarkes und einfaches Benutzeroberflächen-Kit mit Integration von TK.
Einmal schreiben, überall ausführen. Es läuft unter Windows, Mac OS X und fast auf jeder Unix-Plattform.
Für erfahrene Programmierer ist der Einstieg ganz einfach. da die Sprache so einfach ist, dass sie Tcl in wenigen Stunden oder Tagen lernen können.
Mit Tcl können Sie vorhandene Anwendungen problemlos erweitern. Es ist auch möglich, Tcl in C, C ++ oder Java in Tcl aufzunehmen oder umgekehrt.
Verfügen Sie über leistungsstarke Netzwerkfunktionen.
Schließlich ist es Open Source, kostenlos und kann unbegrenzt für kommerzielle Anwendungen verwendet werden.
Anwendungen
Tcl ist eine Allzwecksprache und Sie können Tcl überall finden. Es enthält,
- Skalierbare Websites, die häufig von Datenbanken unterstützt werden.
- Hochleistungs-Webserver, die mit TclHttpd erstellt wurden.
- Tcl mit CGI-basierten Websites.
- Desktop-GUI-Anwendungen.
- Eingebettete Anwendungen.
Einrichtung der lokalen Umgebung
Wenn Sie bereit sind, Ihre Umgebung für Tcl einzurichten, benötigen Sie die folgenden zwei Softwareanwendungen, die auf Ihrem Computer verfügbar sind:
- Texteditor
- Tcl Dolmetscher.
Texteditor
Dies wird verwendet, um Ihr Programm einzugeben. Beispiele für einige Texteditoren sind Windows Notepad, OS Edit-Befehl, Brief, Epsilon, EMACS und vim oder vi.
Name und Version eines Texteditors können auf verschiedenen Betriebssystemen variieren. Beispielsweise wird Notepad unter Windows verwendet, und vim oder vi können sowohl unter Windows als auch unter Linux oder UNIX verwendet werden.
Die Dateien, die Sie mit Ihrem Texteditor erstellen, werden als Quelldateien bezeichnet und enthalten Programmquellcode. Die Quelldateien für Tcl-Programme werden mit der Erweiterung benannt".tcl".
Stellen Sie vor Beginn der Programmierung sicher, dass Sie über einen Texteditor verfügen und über genügend Erfahrung verfügen, um ein Computerprogramm zu schreiben, in einer Datei zu speichern, zu erstellen und schließlich auszuführen.
Der Tcl-Dolmetscher
Es ist nur ein kleines Programm, mit dem Sie Tcl-Befehle eingeben und zeilenweise ausführen lassen können. Es stoppt die Ausführung einer tcl-Datei, falls im Gegensatz zu einem Compiler, der vollständig ausgeführt wird, ein Fehler auftritt.
Lassen Sie uns eine helloWorld.tcl-Datei wie folgt haben. Wir werden dies als erstes Programm verwenden, wir laufen auf einer von Ihnen gewählten Plattform.
#!/usr/bin/tclsh
puts "Hello World!"
Installation unter Windows
Laden Sie die neueste Version für das Windows- Installationsprogramm aus der Liste der verfügbaren Active Tcl-Binärdateien herunter . Die aktive Tcl Community Edition ist für den persönlichen Gebrauch kostenlos.
Führen Sie die heruntergeladene ausführbare Datei aus, um die Tcl zu installieren. Befolgen Sie dazu die Anweisungen auf dem Bildschirm.
Jetzt können wir eine Tcl-Datei erstellen und ausführen, z. B. helloWorld.tcl, indem wir mit dem Befehl 'cd' in einen Ordner wechseln, der die Datei enthält, und dann das Programm mit den folgenden Schritten ausführen
C:\Tcl> tclsh helloWorld.tcl
Wir können die folgende Ausgabe sehen.
C:\Tcl> helloWorld
C: \ Tcl ist der Ordner, in dem ich meine Proben speichere. Sie können es in den Ordner ändern, in dem Sie Tcl-Programme gespeichert haben.
Installation unter Linux
Die meisten Linux-Betriebssysteme sind mit integriertem Tcl ausgestattet, und Sie können sofort mit diesen Systemen beginnen. Falls es nicht verfügbar ist, können Sie den folgenden Befehl verwenden, um Tcl-Tk herunterzuladen und zu installieren.
$ yum install tcl tk
Jetzt können wir eine Tcl-Datei erstellen und ausführen, z. B. helloWorld.tcl, indem wir mit dem Befehl 'cd' in einen Ordner wechseln, der die Datei enthält, und dann das Programm mit den folgenden Schritten ausführen:
$ tclsh helloWorld.tcl
Wir können die folgende Ausgabe sehen -
$ hello world
Installation auf Debian-basierten Systemen
Falls es in Ihrem Betriebssystem nicht verfügbar ist, können Sie den folgenden Befehl verwenden, um Tcl-Tk herunterzuladen und zu installieren:
$ sudo apt-get install tcl tk
Jetzt können wir eine Tcl-Datei erstellen und ausführen, z. B. helloWorld.tcl, indem wir mit dem Befehl 'cd' in einen Ordner wechseln, der die Datei enthält, und dann das Programm mit den folgenden Schritten ausführen:
$ tclsh helloWorld.tcl
Wir können die folgende Ausgabe sehen -
$ hello world
Installation unter Mac OS X.
Laden Sie die neueste Version für das Mac OS X- Paket aus der Liste der verfügbaren Active Tcl-Binärdateien herunter . Die aktive Tcl Community Edition ist für den persönlichen Gebrauch kostenlos.
Führen Sie die heruntergeladene ausführbare Datei aus, um Active Tcl zu installieren. Befolgen Sie dazu die Anweisungen auf dem Bildschirm.
Jetzt können wir eine Tcl-Datei erstellen und ausführen, z. B. helloWorld.tcl, indem wir mit 'cd' in einen Ordner wechseln, der die Datei enthält, und dann das Programm mit den folgenden Schritten ausführen:
$ tclsh helloWorld.tcl
Wir können die folgende Ausgabe sehen -
$ hello world
Installation aus Quelldateien
Sie können die Option zum Installieren aus Quelldateien verwenden, wenn kein Binärpaket verfügbar ist. Es wird im Allgemeinen bevorzugt, Tcl-Binärdateien für Windows und Mac OS X zu verwenden. Daher wird im Folgenden nur die Kompilierung von Quellen auf einem Unix-basierten System gezeigt.
Laden Sie die Quelldateien herunter .
Verwenden Sie nun die folgenden Befehle, um nach dem Wechsel zum heruntergeladenen Ordner zu extrahieren, zu kompilieren und zu erstellen.
$ tar zxf tcl8.6.1-src.tar.gz $ cd tcl8.6.1
$ cd unix $ ./configure —prefix=/opt —enable-gcc
$ make $ sudo make install
Note - Stellen Sie sicher, dass Sie den Dateinamen in die Version ändern, die Sie mit den oben angegebenen Befehlen 1 und 2 heruntergeladen haben.
In Tcl klassifizieren wir einige der Variablen als spezielle Variablen und sie haben eine vordefinierte Verwendung / Funktionalität. Die Liste der Sondervariablen ist unten aufgeführt.
Sr.Nr. | Spezielle Variable & Beschreibung |
---|---|
1 | argc Verweist auf eine Reihe von Befehlszeilenargumenten. |
2 | argv Verweist auf die Liste mit den Befehlszeilenargumenten. |
3 | argv0 Bezieht sich auf den Dateinamen der zu interpretierenden Datei oder den Namen, unter dem wir das Skript aufrufen. |
4 | env Wird zur Darstellung des Arrays von Elementen verwendet, bei denen es sich um Umgebungsvariablen handelt. |
5 | errorCode Gibt den Fehlercode für den letzten Tcl-Fehler an. |
6 | errorInfo Stellt die Stapelverfolgung für den letzten Tcl-Fehler bereit. |
7 | tcl_interactive Dient zum Umschalten zwischen interaktivem und nicht interaktivem Modus, indem dieser auf 1 bzw. 0 gesetzt wird. |
8 | tcl_library Wird zum Festlegen des Speicherorts von Standard-Tcl-Bibliotheken verwendet. |
9 | tcl_pkgPath Stellt die Liste der Verzeichnisse bereit, in denen Pakete im Allgemeinen installiert sind. |
10 | tcl_patchLevel Bezieht sich auf die aktuelle Patch-Ebene des Tcl-Interpreters. |
11 | tcl_platform Wird zur Darstellung des Arrays von Elementen mit Objekten wie byteOrder, machine, osVersion, platform und os verwendet. |
12 | tcl_precision Bezieht sich auf die Genauigkeit, dh die Anzahl der Stellen, die beim Konvertieren in Gleitkommazahlen in Zeichenfolgen beibehalten werden sollen. Der Standardwert ist 12. |
13 | tcl_prompt1 Bezieht sich auf die primäre Eingabeaufforderung. |
14 | tcl_prompt2 Verweist auf die sekundäre Eingabeaufforderung mit ungültigen Befehlen. |
15 | tcl_rcFileName Stellt die benutzerspezifische Startdatei bereit. |
16 | tcl_traceCompile Wird zur Steuerung der Ablaufverfolgung der Bytecode-Kompilierung verwendet. Verwenden Sie 0 für keine Ausgabe, 1 für eine Zusammenfassung und 2 für eine detaillierte Ausgabe. |
17 | tcl_traceExec Wird zur Steuerung der Ablaufverfolgung der Bytecode-Ausführung verwendet. Verwenden Sie 0 für keine Ausgabe, 1 für eine Zusammenfassung und 2 für eine detaillierte Ausgabe. |
18 | tcl_version Gibt die aktuelle Version des Tcl-Interpreters zurück. |
Die obigen speziellen Variablen haben ihre spezielle Bedeutung für den Tcl-Interpreter.
Beispiele für die Verwendung von Tcl-Spezialvariablen
Sehen wir uns einige Beispiele für spezielle Variablen an.
Tcl-Version
#!/usr/bin/tclsh
puts $tcl_version
Wenn Sie das Programm ausführen, erhalten Sie eine ähnliche Ausgabe wie unten gezeigt -
8.6
Tcl-Umgebungspfad
#!/usr/bin/tclsh
puts $env(PATH)
Wenn Sie das Programm ausführen, erhalten Sie eine ähnliche Ausgabe wie unten gezeigt -
/home/cg/root/GNUstep/Tools:/usr/GNUstep/Local/Tools:/usr/GNUstep/
System/Tools:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/webmaster/.local/bin:/
home/webmaster/bin:/usr/local/scriba/bin:/usr/local/smlnj/
bin:/usr/local/bin/std:/usr/local/bin/extra:/usr/local/fantom/bin:/usr/
local/dart/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin:/opt/mono/
bin:/opt/mono/lib/mono/4.5:/usr/local/bin:.:/usr/libexec/sdcc:/usr/local/
icon-v950/bin:/usr/local/mozart/bin:/opt/Pawn/bin:/opt/jdk1.7.0_75/bin:/
opt/jdk1.7.0_75/jre/bin:/opt/pash/Source/PashConsole/bin/Debug/
Tcl-Paketpfad
#!/usr/bin/tclsh
puts $tcl_pkgPath
Wenn Sie das Programm ausführen, erhalten Sie eine ähnliche Ausgabe wie unten gezeigt -
/usr/lib64/tcl8.6 /usr/share/tcl8.6 /usr/lib64/tk8.6 /usr/share/tk8.6
Tcl Bibliothek
#!/usr/bin/tclsh
puts $tcl_library
Wenn Sie das Programm ausführen, erhalten Sie eine ähnliche Ausgabe wie unten gezeigt -
/usr/share/tcl8.6
Tcl Patch Level
#!/usr/bin/tclsh
puts $tcl_patchLevel
Wenn Sie das Programm ausführen, erhalten Sie eine ähnliche Ausgabe wie unten gezeigt -
8.6.6
Tcl Präzision
#!/usr/bin/tclsh
puts $tcl_precision
Wenn Sie das Programm ausführen, erhalten Sie eine ähnliche Ausgabe wie unten gezeigt -
0
Tcl Startdatei
#!/usr/bin/tclsh
puts $tcl_rcFileName
Wenn Sie das Programm ausführen, erhalten Sie eine ähnliche Ausgabe wie unten gezeigt -
~/.tclshrc
Tcl ist ganz einfach zu erlernen und wir beginnen mit der Erstellung unseres ersten Tcl-Programms!
Erstes Tcl-Programm
Schreiben wir ein einfaches Tcl-Programm. Alle Tcl-Dateien haben eine Erweiterung, dh .tcl. Fügen Sie also den folgenden Quellcode in eine test.tcl-Datei ein.
#!/usr/bin/tclsh
puts "Hello, World!"
Angenommen, die Tcl-Umgebung ist korrekt eingerichtet. Lassen Sie uns das Programm ausführen, nachdem Sie in das Verzeichnis der Datei gewechselt haben, und das Programm dann mit - ausführen
$ tclsh test.tcl
Wir werden die folgende Ausgabe erhalten -
Hello, World!
Lassen Sie uns nun die Grundstruktur des Tcl-Programms sehen, damit Sie die Grundbausteine der Tcl-Sprache leicht verstehen können. In Tcl verwenden wir eine neue Zeile oder ein neues Semikolon, um die vorherige Codezeile zu beenden. Ein Semikolon ist jedoch nicht erforderlich, wenn Sie für jeden Befehl eine neue Zeile verwenden.
Bemerkungen
Kommentare sind wie Hilfetexte in Ihrem Tcl-Programm, und der Interpreter ignoriert sie. Kommentare können am Anfang mit einem Hash-Zeichen (#) geschrieben werden.
#!/usr/bin/tclsh
# my first program in Tcl
puts "Hello World!"
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
Hello World!
Mehrzeiliger oder Blockkommentar wird mit 'if' mit der Bedingung '0' geschrieben. Ein Beispiel ist unten gezeigt.
#!/usr/bin/tclsh
if 0 {
my first program in Tcl program
Its very simple
}
puts "Hello World!"
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
Hello World!
Inline-Kommentare verwenden; #. Ein Beispiel ist unten angegeben.
#!/usr/bin/tclsh
puts "Hello World!" ;# my first print in Tcl program
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
Hello World!
Kennungen
Ein Tcl-Bezeichner ist ein Name, mit dem eine Variable, eine Funktion oder ein anderes benutzerdefiniertes Element identifiziert wird. Ein Bezeichner beginnt mit einem Buchstaben A bis Z oder a bis Z oder einem Unterstrich (_), gefolgt von null oder mehr Buchstaben, Unterstrichen, Dollar ($) und Ziffern (0 bis 9).
Tcl erlaubt keine Interpunktionszeichen wie @ und% in Bezeichnern. Tcl ist eincase sensitive_ Sprache. Somit sind Manpower und Manpower zwei verschiedene Identifikatoren in Tcl. Hier sind einige Beispiele für akzeptable Bezeichner -
mohd zara abc move_name a_123
myname50 _temp j a23b9 retVal
Reservierte Wörter
Die folgende Liste zeigt einige der reservierten Wörter in Tcl. Diese reservierten Wörter dürfen nicht als Konstante, Variable oder andere Bezeichnernamen verwendet werden.
nach | anhängen | Array | auto_execok |
auto_import | auto_load | auto_load_index | auto_qualify |
binär | Bgerror | Unterbrechung | Fang |
CD | Uhr | schließen | concat |
fortsetzen | Dde | Standard | sonst |
elseif | Codierung | eof | Error |
eval | Exec | Ausfahrt | Ausdruck |
blockiert | Fconfigure | fcopy | Datei |
Dateiereignis | Spülen | zum | für jeden |
Format | Gets | glob | global |
Geschichte | Wenn | die Info | interp |
beitreten | Lappend | Lindex | linsert |
Liste | Länge | Belastung | Bereich |
ersetzen | Suche | lsort | Namespace |
öffnen | Paket | pid | pkg_mkIndex |
proc | Puts | pwd | lesen |
regulärer Ausdruck | Regsub | umbenennen | Ressource |
Rückkehr | Scan | suchen | einstellen |
Steckdose | Quelle | Teilt | Zeichenfolge |
subst | Schalter | tclLog | sagen |
Zeit | Spur | Unbekannt | nicht gesetzt |
aktualisieren | Uplevel | upvar | Variable |
vwait | Während |
Leerzeichen in Tcl
Eine Zeile, die nur Leerzeichen enthält, möglicherweise mit einem Kommentar, wird als a bezeichnet blank lineund ein Tcl-Interpreter ignoriert es völlig.
Whitespace ist der Begriff, der in Tcl verwendet wird, um Leerzeichen, Tabulatoren, Zeilenumbrüche und Kommentare zu beschreiben. Whitespace trennt einen Teil einer Anweisung von einem anderen und ermöglicht dem Interpreter zu identifizieren, wo ein Element in einer Anweisung, wie z. B. Puts, endet und das nächste Element beginnt. Daher in der folgenden Aussage -
#!/usr/bin/tclsh
puts "Hello World!"
Zwischen "Puts" und "Hello World!" Muss mindestens ein Leerzeichen (normalerweise ein Leerzeichen) stehen. damit der Dolmetscher sie unterscheiden kann. Auf der anderen Seite in der folgenden Aussage -
#!/usr/bin/tclsh
puts [expr 3 + 2] ;# print sum of the 3 and 2
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
5
Zwischen 3 und + oder zwischen + und 2 sind keine Leerzeichen erforderlich. Es steht Ihnen jedoch frei, einige einzuschließen, wenn Sie dies aus Gründen der Lesbarkeit wünschen.
Wie Sie wissen, ist Tcl eine Tool-Befehlssprache. Befehle sind der wichtigste Teil der Sprache. Tcl-Befehle sind in die Sprache integriert, wobei jeder seine eigene vordefinierte Funktion hat. Diese Befehle bilden die reservierten Wörter der Sprache und können nicht für andere Variablennamen verwendet werden. Der Vorteil dieser Tcl-Befehle besteht darin, dass Sie für jeden dieser Befehle eine eigene Implementierung definieren können, um die ursprünglich integrierte Funktionalität zu ersetzen.
Jeder der Tcl-Befehle validiert die Eingabe und reduziert die Arbeit des Interpreters.
Der Tcl-Befehl ist eigentlich eine Liste von Wörtern, wobei das erste Wort den auszuführenden Befehl darstellt. Die nächsten Wörter repräsentieren die Argumente. Um die Wörter in einem einzigen Argument zu gruppieren, schließen wir mehrere Wörter mit "" oder {} ein.
Die Syntax des Tcl-Befehls lautet wie folgt:
commandName argument1 argument2 ... argumentN
Sehen wir uns ein einfaches Beispiel für den Befehl Tcl an -
#!/usr/bin/tclsh
puts "Hello, world!"
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
Hello, world!
Im obigen Code ist 'put' der Tcl-Befehl und "Hello World" das Argument1. Wie bereits gesagt, haben wir "" verwendet, um zwei Wörter zu gruppieren.
Sehen wir uns ein weiteres Beispiel für einen Tcl-Befehl mit zwei Argumenten an:
#!/usr/bin/tclsh
puts stdout "Hello, world!"
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
Hello, world!
Im obigen Code ist 'put' der Tcl-Befehl, 'stdout' ist argument1 und "Hello World" ist argument2. Hier bewirkt stdout, dass das Programm auf dem Standardausgabegerät gedruckt wird.
Befehlsersetzung
Bei Befehlsersetzungen werden eckige Klammern verwendet, um die Skripte in den eckigen Klammern auszuwerten. Ein einfaches Beispiel zum Hinzufügen von zwei Zahlen ist unten dargestellt -
#!/usr/bin/tclsh
puts [expr 1 + 6 + 9]
Wenn der obige Code ausgeführt wird, erzeugt er folgendes Ergebnis:
16
Variable Substitution
Bei Variablensubstitutionen wird $ vor dem Variablennamen verwendet und gibt den Inhalt der Variablen zurück. Ein einfaches Beispiel zum Festlegen und Drucken eines Werts für eine Variable ist unten dargestellt.
#!/usr/bin/tclsh
set a 3
puts $a
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
3
Backslash-Substitution
Diese werden allgemein genannt escape sequences;; mit jedem Backslash, gefolgt von einem Buchstaben mit eigener Bedeutung. Ein einfaches Beispiel für die Ersetzung von Zeilenumbrüchen ist unten dargestellt.
#!/usr/bin/tclsh
puts "Hello\nWorld"
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
Hello
World
Der primitive Datentyp von Tcl ist Zeichenfolge, und häufig finden wir Anführungszeichen für Tcl als reine Zeichenfolgensprache. Diese primitiven Datentypen erzeugen wiederum zusammengesetzte Datentypen für Liste und assoziatives Array. In Tcl können Datentypen nicht nur die einfachen Tcl-Objekte darstellen, sondern auch komplexe Objekte wie Handles, Grafikobjekte (meistens Widgets) und E / A-Kanäle. Schauen wir uns die Details zu den oben genannten Punkten an.
Einfache Tcl-Objekte
In Tcl, ob es sich um eine Ganzzahl, eine Boolesche Zahl, eine Gleitkommazahl oder eine Zeichenfolge handelt. Wenn Sie eine Variable verwenden möchten, können Sie ihr direkt einen Wert zuweisen. In Tcl gibt es keinen Deklarationsschritt. Für diese verschiedenen Objekttypen kann es interne Darstellungen geben. Bei Bedarf kann ein Datentyp in einen anderen umgewandelt werden. Die Syntax zum Zuweisen eines Werts zur Variablen lautet wie folgt:
#!/usr/bin/tclsh
set myVariable 18
puts $myVariable
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
18
Die obige Anweisung erstellt einen Variablennamen myVariable und speichert ihn als Zeichenfolge, obwohl wir keine doppelten Anführungszeichen verwendet haben. Wenn wir nun versuchen, eine Arithmetik für die Variable zu erstellen, wird diese automatisch in eine Ganzzahl umgewandelt. Ein einfaches Beispiel ist unten gezeigt -
#!/usr/bin/tclsh
set myVariable 18
puts [expr $myVariable + 6 + 9]
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
33
Es ist wichtig zu beachten, dass diese Variablen keine Standardwerte haben und vor ihrer Verwendung einen Wert erhalten müssen.
Wenn wir versuchen, mit Puts zu drucken, wird die Zahl in eine richtige Zeichenfolge umgewandelt. Mit zwei internen und externen Darstellungen kann Tcl im Vergleich zu anderen Sprachen problemlos komplexe Datenstrukturen erstellen. Außerdem ist Tcl aufgrund seiner dynamischen Objektnatur effizienter.
Zeichenfolgendarstellungen
Im Gegensatz zu anderen Sprachen müssen Sie in Tcl keine doppelten Anführungszeichen einfügen, wenn es sich nur um ein einzelnes Wort handelt. Ein Beispiel kann sein -
#!/usr/bin/tclsh
set myVariable hello
puts $myVariable
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
hello
Wenn wir mehrere Zeichenfolgen darstellen möchten, können wir entweder doppelte Anführungszeichen oder geschweifte Klammern verwenden. Es ist unten gezeigt -
#!/usr/bin/tclsh
set myVariable "hello world"
puts $myVariable set myVariable {hello world} puts $myVariable
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
hello world
hello world
Liste
Liste ist nichts anderes als eine Gruppe von Elementen. Eine Gruppe von Wörtern, entweder in doppelten Anführungszeichen oder in geschweiften Klammern, kann verwendet werden, um eine einfache Liste darzustellen. Eine einfache Liste wird unten gezeigt -
#!/usr/bin/tclsh
set myVariable {red green blue}
puts [lindex $myVariable 2] set myVariable "red green blue" puts [lindex $myVariable 1]
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
blue
green
Assoziatives Array
Assoziative Arrays haben einen Index (Schlüssel), der nicht unbedingt eine Ganzzahl ist. Es ist im Allgemeinen eine Zeichenfolge, die sich wie Schlüsselwertpaare verhält. Ein einfaches Beispiel ist unten gezeigt -
#!/usr/bin/tclsh
set marks(english) 80
puts $marks(english) set marks(mathematics) 90 puts $marks(mathematics)
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
80
90
Griffe
Tcl-Handles werden häufig zur Darstellung von Dateien und Grafikobjekten verwendet. Dies können Handles für Netzwerkanforderungen und auch andere Kanäle wie die serielle Schnittstelle, Sockets oder E / A-Geräte sein. Das folgende Beispiel zeigt ein Dateihandle.
set myfile [open "filename" r]
Weitere Informationen zu Dateien finden Sie im Kapitel Tcl-Datei-E / A.
In Tcl gibt es kein Konzept für die Variablendeklaration. Sobald ein neuer Variablenname gefunden wird, definiert Tcl eine neue Variable.
Variablennamen
Der Name von Variablen kann beliebige Zeichen und Längen enthalten. Sie können sogar Leerzeichen verwenden, indem Sie die Variable in geschweifte Klammern setzen. Dies wird jedoch nicht bevorzugt.
Mit dem Befehl set wird einer Variablen ein Wert zugewiesen. Die Syntax für den Befehl set lautet:
set variableName value
Einige Beispiele für Variablen sind unten aufgeführt -
#!/usr/bin/tclsh
set variableA 10
set {variable B} test
puts $variableA puts ${variable B}
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
10
test
Wie Sie im obigen Programm sehen können, wird $ variableName verwendet, um den Wert der Variablen abzurufen.
Dynamische Eingabe
Tcl ist eine dynamisch typisierte Sprache. Der Wert der Variablen kann bei Bedarf dynamisch in den erforderlichen Typ konvertiert werden. Beispielsweise wird eine Zahl 5, die als Zeichenfolge gespeichert ist, bei einer arithmetischen Operation in eine Zahl umgewandelt. Es ist unten gezeigt -
#!/usr/bin/tclsh
set variableA "10"
puts $variableA
set sum [expr $variableA +20]; puts $sum
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
10
30
Mathematische Ausdrücke
Wie Sie im obigen Beispiel sehen können, wird expr zur Darstellung des mathematischen Ausdrucks verwendet. Die Standardgenauigkeit von Tcl beträgt 12 Stellen. Um Gleitkommaergebnisse zu erhalten, sollten wir mindestens eine einzelne Dezimalstelle hinzufügen. Ein einfaches Beispiel erklärt das Obige.
#!/usr/bin/tclsh
set variableA "10"
set result [expr $variableA / 9]; puts $result
set result [expr $variableA / 9.0]; puts $result
set variableA "10.0"
set result [expr $variableA / 9]; puts $result
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
1
1.1111111111111112
1.1111111111111112
Im obigen Beispiel sehen Sie drei Fälle. Im ersten Fall sind die Dividende und der Divisor ganze Zahlen, und wir erhalten als Ergebnis eine ganze Zahl. Im zweiten Fall ist der Divisor allein eine Dezimalzahl und im dritten Fall ist die Dividende eine Dezimalzahl. Sowohl im zweiten als auch im dritten Fall erhalten wir als Ergebnis eine Dezimalzahl.
Im obigen Code können Sie die Genauigkeit mithilfe der speziellen Variablen tcl_precision ändern. Es ist unten gezeigt -
#!/usr/bin/tclsh
set variableA "10"
set tcl_precision 5
set result [expr $variableA / 9.0]; puts $result
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
1.1111
Ein Operator ist ein Symbol, das den Compiler anweist, bestimmte mathematische oder logische Manipulationen durchzuführen. Die Tcl-Sprache ist reich an integrierten Operatoren und bietet die folgenden Arten von Operatoren:
- Rechenzeichen
- Vergleichsoperatoren
- Logische Operatoren
- Bitweise Operatoren
- Ternärer Operator
In diesem Kapitel werden die arithmetischen, relationalen, logischen, bitweisen und ternären Operatoren nacheinander erläutert.
Rechenzeichen
Die folgende Tabelle zeigt alle von der Tcl-Sprache unterstützten arithmetischen Operatoren. Angenommen, die Variable 'A' hält 10 und die Variable 'B' hält 20, dann -
Beispiele anzeigen
Operator | Beschreibung | Beispiel |
---|---|---|
+ | Fügt zwei Operanden hinzu | A + B ergibt 30 |
- - | Subtrahiert den zweiten Operanden vom ersten | A - B ergibt -10 |
* * | Multipliziert beide Operanden | A * B ergibt 200 |
/. | Teilt den Zähler durch den De-Zähler | B / A ergibt 2 |
%. | Modul Operator und Rest nach einer ganzzahligen Division | B% A ergibt 0 |
Vergleichsoperatoren
Die folgende Tabelle zeigt alle relationalen Operatoren, die von der Tcl-Sprache unterstützt werden. Variable annehmenA hält 10 und variabel B hält 20, dann -
Beispiele anzeigen
Operator | Beschreibung | Beispiel |
---|---|---|
== | Überprüft, ob die Werte von zwei Operanden gleich sind oder nicht. Wenn ja, wird die Bedingung wahr. | (A == B) ist nicht wahr. |
! = | Überprüft, ob die Werte von zwei Operanden gleich sind oder nicht. Wenn die Werte nicht gleich sind, wird die Bedingung wahr. | (A! = B) ist wahr. |
> | Überprüft, ob der Wert des linken Operanden größer als der Wert des rechten Operanden ist. Wenn ja, wird die Bedingung wahr. | (A> B) ist nicht wahr. |
< | Überprüft, ob der Wert des linken Operanden kleiner als der Wert des rechten Operanden ist. Wenn ja, wird die Bedingung wahr. | (A <B) ist wahr. |
> = | Überprüft, ob der Wert des linken Operanden größer oder gleich dem Wert des rechten Operanden ist. Wenn ja, wird die Bedingung wahr. | (A> = B) ist nicht wahr. |
<= | Überprüft, ob der Wert des linken Operanden kleiner oder gleich dem Wert des rechten Operanden ist. Wenn ja, wird die Bedingung wahr. | (A <= B) ist wahr. |
Logische Operatoren
Die folgende Tabelle zeigt alle logischen Operatoren, die von der Tcl-Sprache unterstützt werden. Variable annehmenA hält 1 und variabel B hält 0, dann -
Beispiele anzeigen
Operator | Beschreibung | Beispiel |
---|---|---|
&& | Wird als logischer UND-Operator bezeichnet. Wenn beide Operanden ungleich Null sind, wird die Bedingung wahr. | (A && B) ist falsch. |
|| | Wird als logischer ODER-Operator bezeichnet. Wenn einer der beiden Operanden ungleich Null ist, wird die Bedingung wahr. | (A || B) ist wahr. |
! | Wird als logischer NICHT-Operator bezeichnet. Verwenden Sie diese Option, um den logischen Status des Operanden umzukehren. Wenn eine Bedingung wahr ist, macht der Operator Logical NOT false. | ! (A && B) ist wahr. |
Bitweise Operatoren
Der bitweise Operator bearbeitet Bits und führt eine bitweise Operation durch. Die Wahrheitstabellen für &, | und ^ lauten wie folgt:
p | q | p & q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
Angenommen, A = 60; und B = 13; jetzt im Binärformat werden sie wie folgt sein -
A = 0011 1100
B = 0000 1101
----------------------
A & B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
Die von der Tcl-Sprache unterstützten bitweisen Operatoren sind in der folgenden Tabelle aufgeführt. Variable annehmenA hält 60 und variabel B hält 13, dann -
Beispiele anzeigen
Operator | Beschreibung | Beispiel |
---|---|---|
& | Der binäre UND-Operator kopiert ein Bit in das Ergebnis, wenn es in beiden Operanden vorhanden ist. | (A & B) ergibt 12, was 0000 1100 ist |
| | Der binäre ODER-Operator kopiert ein Bit, wenn es in einem der Operanden vorhanden ist. | (A | B) ergibt 61, was 0011 1101 ist |
^ | Der binäre XOR-Operator kopiert das Bit, wenn es in einem Operanden gesetzt ist, aber nicht in beiden. | (A ^ B) ergibt 49, was 0011 0001 ist |
<< | Binärer Linksschaltoperator. Der Wert der linken Operanden wird um die Anzahl der vom rechten Operanden angegebenen Bits nach links verschoben. | Ein << 2 ergibt 240, was 1111 0000 ist |
>> | Binärer Rechtsschieber. Der Wert der linken Operanden wird um die Anzahl der vom rechten Operanden angegebenen Bits nach rechts verschoben. | Eine >> 2 ergibt 15, was 0000 1111 ist |
Ternärer Operator
Beispiele anzeigen
Operator | Beschreibung | Beispiel |
---|---|---|
? :: | Ternär | Wenn Bedingung wahr ist? Dann Wert X: Andernfalls Wert Y. |
Vorrang der Operatoren in Tcl
Die Operatorrangfolge bestimmt die Gruppierung von Begriffen in einem Ausdruck. Dies wirkt sich darauf aus, wie ein Ausdruck ausgewertet wird. Bestimmte Operatoren haben eine höhere Priorität als andere. Beispielsweise hat der Multiplikationsoperator eine höhere Priorität als der Additionsoperator.
For example: x = 7 + 3 · 2; Hier wird x 13 zugewiesen, nicht 20, da der Operator * eine höhere Priorität als + hat. Daher wird er zuerst mit 3 * 2 multipliziert und dann zu 7 addiert.
Hier werden Operatoren mit der höchsten Priorität oben in der Tabelle angezeigt, Operatoren mit der niedrigsten Priorität unten. Innerhalb eines Ausdrucks werden zuerst Operatoren mit höherer Priorität ausgewertet.
Beispiele anzeigen
Kategorie | Operator | Assoziativität |
---|---|---|
Einstellig | + - | Rechts nach links |
Multiplikativ | * /% | Links nach rechts |
Zusatzstoff | + - | Links nach rechts |
Verschiebung | << >> | Links nach rechts |
Relational | << = >> = | Links nach rechts |
Bitweises UND | & | Links nach rechts |
Bitweises XOR | ^ | Links nach rechts |
Bitweises ODER | | | Links nach rechts |
Logisches UND | && | Links nach rechts |
Logisches ODER | || | Links nach rechts |
Ternär | ?: | Rechts nach links |
Entscheidungsstrukturen erfordern, dass der Programmierer eine oder mehrere Bedingungen angibt, die vom Programm bewertet oder getestet werden sollen, zusammen mit einer Anweisung oder Anweisungen, die ausgeführt werden sollen, wenn die Bedingung als wahr bestimmt wird, und optional anderen Anweisungen, die ausgeführt werden sollen, wenn die Bedingung ausgeführt wird wird als falsch bestimmt.
Es folgt die allgemeine Form einer typischen Entscheidungsstruktur, die in den meisten Programmiersprachen zu finden ist:
Die Tcl-Sprache verwendet den Befehl expr intern und daher ist es nicht erforderlich, dass wir die expr-Anweisung explizit verwenden.
Die Tcl-Sprache bietet folgende Arten von Entscheidungserklärungen:
Sr.Nr. | Aussage & Beschreibung |
---|---|
1 | if-Anweisung Eine 'if'-Anweisung besteht aus einem Booleschen Ausdruck, gefolgt von einer oder mehreren Anweisungen. |
2 | if ... else-Anweisung Auf eine 'if'-Anweisung kann eine optionale' else'-Anweisung folgen, die ausgeführt wird, wenn der Boolesche Ausdruck falsch ist. |
3 | verschachtelte if-Anweisungen Sie können eine 'if'- oder' else if'-Anweisung in einer anderen 'if'- oder' else if'-Anweisung (en) verwenden. |
4 | switch-Anweisung EIN switch Mit der Anweisung kann eine Variable auf Gleichheit mit einer Liste von Werten getestet werden. |
5 | verschachtelte switch-Anweisungen Sie können eine verwenden switch Aussage in einem anderen switch Aussage (n). |
Das ? : Operator
Wir haben abgedeckt conditional operator ? : im vorherigen Kapitel, das zum Ersetzen verwendet werden kann if...elseAussagen. Es hat die folgende allgemeine Form -
Exp1 ? Exp2 : Exp3;
Wobei Exp1, Exp2 und Exp3 Ausdrücke sind. Beachten Sie die Verwendung und Platzierung des Doppelpunkts.
Der Wert von a '? Ausdruck 'wird wie folgt bestimmt: Exp1 wird ausgewertet. Wenn es wahr ist, wird Exp2 ausgewertet und wird zum Wert des gesamten '? Ausdruck.' Wenn Exp1 falsch ist, wird Exp3 ausgewertet und sein Wert wird zum Wert des Ausdrucks. Ein Beispiel ist unten gezeigt.
#!/usr/bin/tclsh
set a 10;
set b [expr $a == 1 ? 20: 30] puts "Value of b is $b\n"
set b [expr $a == 10 ? 20: 30] puts "Value of b is $b\n"
Wenn Sie das obige Programm kompilieren und ausführen, wird das folgende Ergebnis erzielt:
Value of b is 30
Value of b is 20
Es kann vorkommen, dass Sie einen Codeblock mehrmals ausführen müssen. Im Allgemeinen werden Anweisungen nacheinander ausgeführt: Die erste Anweisung in einer Funktion wird zuerst ausgeführt, gefolgt von der zweiten usw.
Programmiersprachen bieten verschiedene Steuerungsstrukturen, die kompliziertere Ausführungspfade ermöglichen.
Mit einer Schleifenanweisung können wir eine Anweisung oder eine Gruppe von Anweisungen mehrmals ausführen. Im Folgenden wird die allgemeine Form einer Schleifenanweisung in den meisten Programmiersprachen beschrieben:
Die Tcl-Sprache bietet die folgenden Arten von Schleifen, um die Schleifenanforderungen zu erfüllen.
Sr.Nr. | Schleifentyp & Beschreibung |
---|---|
1 | while-Schleife Wiederholt eine Anweisung oder eine Gruppe von Anweisungen, während eine bestimmte Bedingung erfüllt ist. Es testet die Bedingung, bevor der Schleifenkörper ausgeführt wird. |
2 | für Schleife Führt eine Folge von Anweisungen mehrmals aus und verkürzt den Code, der die Schleifenvariable verwaltet. |
3 | verschachtelte Schleifen Sie können eine oder mehrere Schleifen in einer anderen while-, for- oder do..while-Schleife verwenden. |
Schleifensteuerungsanweisungen
Schleifensteueranweisungen ändern die Ausführung von ihrer normalen Reihenfolge. Wenn die Ausführung einen Bereich verlässt, werden alle automatischen Objekte, die in diesem Bereich erstellt wurden, zerstört.
Tcl unterstützt die folgenden Steueranweisungen.
Sr.Nr. | Steueranweisung & Beschreibung |
---|---|
1 | break-Anweisung Beendet die Schleifen- oder Schalteranweisung und überträgt die Ausführung an die Anweisung unmittelbar nach der Schleife oder dem Schalter. |
2 | Aussage fortsetzen Bewirkt, dass die Schleife den Rest ihres Körpers überspringt und ihren Zustand sofort erneut testet, bevor sie wiederholt wird. |
Die Endlosschleife
Eine Schleife wird zur Endlosschleife, wenn eine Bedingung niemals falsch wird. DaswhileZu diesem Zweck wird traditionell eine Schleife verwendet. Sie können eine Endlosschleife erstellen, indem Sie den bedingten Ausdruck als 1 belassen.
while {1} {
puts "This loop will run forever."
}
Wenn der bedingte Ausdruck fehlt, wird angenommen, dass er wahr ist. Tcl-Programmierer verwenden häufiger das Konstrukt while {1}, um eine Endlosschleife zu kennzeichnen.
NOTE - Sie können eine Endlosschleife beenden, indem Sie Strg + C drücken.
Ein Array ist eine systematische Anordnung einer Gruppe von Elementen unter Verwendung von Indizes. Die Syntax für das herkömmliche Array ist unten dargestellt.
set ArrayName(Index) value
Ein Beispiel zum Erstellen eines einfachen Arrays ist unten dargestellt.
#!/usr/bin/tclsh
set languages(0) Tcl
set languages(1) "C Language"
puts $languages(0) puts $languages(1)
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
Tcl
C Language
Größe des Arrays
Die Syntax zur Berechnung des Größenarrays ist unten dargestellt.
[array size variablename]
Ein Beispiel zum Drucken der Größe ist unten gezeigt.
#!/usr/bin/tclsh
set languages(0) Tcl
set languages(1) "C Language"
puts [array size languages]
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
2
Array-Iteration
Array-Indizes können jedoch nicht kontinuierliche Werte sein, wie sie für Index 1, dann für Index 10 usw. angegeben wurden. Falls sie jedoch kontinuierlich sind, können wir die Array-Iteration verwenden, um auf Elemente des Arrays zuzugreifen. Eine einfache Array-Iteration zum Drucken von Elementen des Arrays ist unten dargestellt.
#!/usr/bin/tclsh
set languages(0) Tcl
set languages(1) "C Language"
for { set index 0 } { $index < [array size languages] } { incr index } { puts "languages($index) : $languages($index)"
}
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
languages(0) : Tcl
languages(1) : C Language
Assoziative Arrays
In Tcl sind alle Arrays von Natur aus assoziativ. Arrays werden ohne bestimmte Reihenfolge gespeichert und abgerufen. Assoziative Arrays haben einen Index, der nicht unbedingt eine Zahl ist und nur spärlich gefüllt werden kann. Ein einfaches Beispiel für ein assoziatives Array mit Nicht-Zahlenindizes ist unten dargestellt.
#!/usr/bin/tclsh
set personA(Name) "Dave"
set personA(Age) 14
puts $personA(Name) puts $personA(Age)
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
Dave
14
Array-Indizes
Die Syntax zum Abrufen von Array-Indizes ist unten dargestellt.
[array names variablename]
Ein Beispiel zum Drucken der Größe ist unten gezeigt.
#!/usr/bin/tclsh
set personA(Name) "Dave"
set personA(Age) 14
puts [array names personA]
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
Age Name
Iteration des assoziativen Arrays
Sie können die Indizes des Arrays verwenden, um das assoziative Array zu durchlaufen. Ein Beispiel ist unten gezeigt.
#!/usr/bin/tclsh
set personA(Name) "Dave"
set personA(Age) 14
foreach index [array names personA] {
puts "personA($index): $personA($index)"
}
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
personA(Age): 14
personA(Name): Dave
Der primitive Datentyp von Tcl ist Zeichenfolge, und häufig finden wir Anführungszeichen für Tcl als reine Zeichenfolgensprache. Diese Zeichenfolgen können alphanumerische Zeichen, nur Zahlen, Boolesche oder sogar Binärdaten enthalten. Tcl verwendet 16-Bit-Unicode-Zeichen und alphanumerische Zeichen können Buchstaben enthalten, einschließlich nicht-lateinischer Zeichen, Zahlen oder Satzzeichen.
Der boolesche Wert kann als 1, ja oder wahr für wahr und 0, nein oder falsch für falsch dargestellt werden.
Zeichenfolgendarstellungen
Im Gegensatz zu anderen Sprachen müssen Sie in Tcl keine doppelten Anführungszeichen einfügen, wenn es sich nur um ein einzelnes Wort handelt. Ein Beispiel kann sein -
#!/usr/bin/tclsh
set myVariable hello
puts $myVariable
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
hello
Wenn wir mehrere Zeichenfolgen darstellen möchten, können wir entweder doppelte Anführungszeichen oder geschweifte Klammern verwenden. Es ist unten gezeigt -
#!/usr/bin/tclsh
set myVariable "hello world"
puts $myVariable set myVariable {hello world} puts $myVariable
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
hello world
hello world
String-Escape-Sequenz
Ein Zeichenliteral kann ein einfaches Zeichen (z. B. 'x'), eine Escape-Sequenz (z. B. '\ t') oder ein universelles Zeichen (z. B. '\ u02C0') sein.
Es gibt bestimmte Zeichen in Tcl, denen ein Backslash vorangestellt ist. Sie haben eine besondere Bedeutung und werden wie Zeilenumbrüche (\ n) oder Tabulatoren (\ t) dargestellt. Hier haben Sie eine Liste einiger solcher Escape-Sequenzcodes -
Fluchtabfolge | Bedeutung |
---|---|
\\ | \ Zeichen |
\ ' | 'Charakter |
"" | "Charakter |
\? | ? Charakter |
\ein | Alarm oder Glocke |
\ b | Rücktaste |
\ f | Formularvorschub |
\ n | Neue Zeile |
\ r | Wagenrücklauf |
\ t | Horizontale Registerkarte |
\ v | Vertikale Registerkarte |
Das folgende Beispiel zeigt einige Escape-Zeichen -
#!/usr/bin/tclsh
puts "Hello\tWorld\n\nTutorialspoint";
Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:
Hello World
Tutorialspoint
String-Befehl
Die Liste der Unterbefehle für den Befehl string ist in der folgenden Tabelle aufgeführt:
Sr.Nr. | Methoden & Beschreibung |
---|---|
1 | compare string1 string2 Vergleicht string1 und string2 lexographisch. Gibt 0 zurück, wenn gleich, -1, wenn string1 vor string2 steht, andernfalls 1. |
2 | first string1 string2 Gibt das erste Auftreten des Index von Zeichenfolge1 in Zeichenfolge2 zurück. Wenn nicht gefunden, wird -1 zurückgegeben. |
3 | index Zeichenfolgenindex Gibt das Zeichen am Index zurück. |
4 | last string1 string2 Gibt das letzte Indexvorkommen von string1 in string2 zurück. Wenn nicht gefunden, wird -1 zurückgegeben. |
5 | length Zeichenfolge Gibt die Länge der Zeichenfolge zurück. |
6 | match pattern Zeichenfolge Gibt 1 zurück, wenn die Zeichenfolge mit dem Muster übereinstimmt. |
7 | range Zeichenfolge index1 index2 Gibt den Zeichenbereich in der Zeichenfolge von Index1 bis Index2 zurück. |
8 | tolower Zeichenfolge Gibt die Zeichenfolge in Kleinbuchstaben zurück. |
9 | toupper Zeichenfolge Gibt den Großbuchstaben zurück. |
10 | trim string? trimcharacters? Entfernt Trimzeichen an beiden Enden der Zeichenfolge. Die Standard-Trimzeichen sind Leerzeichen. |
11 | trimleft string? trimcharacters? Entfernt Trimzeichen am linken Anfang der Zeichenfolge. Die Standard-Trimzeichen sind Leerzeichen. |
12 | trimright string? trimcharacters? Entfernt Trimzeichen am linken Ende der Zeichenfolge. Die Standard-Trimzeichen sind Leerzeichen. |
13 | wordend Findstring-Index Geben Sie den Index in der Suchzeichenfolge des Zeichens nach dem Wort zurück, das das Zeichen am Index enthält. |
14 | wordstart Findstring-Index Geben Sie den Index in der Suchzeichenfolge des ersten Zeichens im Wort zurück, das das Zeichen am Index enthält. |
Beispiele für einige häufig verwendete Tcl-String-Unterbefehle sind unten angegeben.
String-Vergleich
#!/usr/bin/tclsh
set s1 "Hello"
set s2 "World"
set s3 "World"
puts [string compare $s1 $s2]
if {[string compare $s2 $s3] == 0} {
puts "String \'s1\' and \'s2\' are same.";
}
if {[string compare $s1 $s2] == -1} {
puts "String \'s1\' comes before \'s2\'.";
}
if {[string compare $s2 $s1] == 1} {
puts "String \'s2\' comes after \'s1\'.";
}
Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:
-1
String 's1' and 's2' are same.
String 's1' comes before 's2'.
String 's2' comes after 's1'.
Index der Zeichenfolge
#!/usr/bin/tclsh
set s1 "Hello World"
set s2 "o"
puts "First occurrence of $s2 in s1" puts [string first $s2 $s1] puts "Character at index 0 in s1" puts [string index $s1 0]
puts "Last occurrence of $s2 in s1" puts [string last $s2 $s1] puts "Word end index in s1" puts [string wordend $s1 20]
puts "Word start index in s1"
puts [string wordstart $s1 20]
Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:
First occurrence of o in s1
4
Character at index 0 in s1
H
Last occurrence of o in s1
7
Word end index in s1
11
Word start index in s1
6
Länge der Zeichenfolge
#!/usr/bin/tclsh
set s1 "Hello World"
puts "Length of string s1"
puts [string length $s1]
Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:
Length of string s1
11
Fälle bearbeiten
#!/usr/bin/tclsh
set s1 "Hello World"
puts "Uppercase string of s1"
puts [string toupper $s1] puts "Lowercase string of s1" puts [string tolower $s1]
Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:
Uppercase string of s1
HELLO WORLD
Lowercase string of s1
hello world
Zeichen zuschneiden
#!/usr/bin/tclsh
set s1 "Hello World"
set s2 "World"
puts "Trim right $s2 in $s1"
puts [string trimright $s1 $s2]
set s2 "Hello"
puts "Trim left $s2 in $s1"
puts [string trimleft $s1 $s2]
set s1 " Hello World "
set s2 " "
puts "Trim characters s1 on both sides of s2"
puts [string trim $s1 $s2]
When the above code is compiled and executed, it produces the following result −
Trim right World in Hello World
Hello
Trim left Hello in Hello World
World
Trim characters s1 on both sides of s2
Hello World
Matching Strings
#!/usr/bin/tclsh
set s1 "[email protected]"
set s2 "*@*.com"
puts "Matching pattern s2 in s1"
puts [string match "*@*.com" $s1 ] puts "Matching pattern tcl in s1" puts [string match {tcl} $s1]
When the above code is compiled and executed, it produces the following result −
Matching pattern s2 in s1
1
Matching pattern tcl in s1
0
Append Command
#!/usr/bin/tclsh
set s1 "Hello"
append s1 " World"
puts $s1
When the above code is compiled and executed, it produces the following result −
Hello World
Format command
The following table shows the list of format specifiers available in Tcl −
Specifier | Use |
---|---|
%s | String representation |
%d | Integer representation |
%f | Floating point representation |
%e | Floating point representation with mantissa-exponent form |
%x | Hexa decimal representation |
Einige einfache Beispiele sind unten angegeben -
#!/usr/bin/tclsh
puts [format "%f" 43.5]
puts [format "%e" 43.5]
puts [format "%d %s" 4 tuts]
puts [format "%s" "Tcl Language"]
puts [format "%x" 40]
Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:
43.500000
4.350000e+01
4 tuts
Tcl Language
28
Scan-Befehl
Der Scan-Befehl wird zum Parsen einer Zeichenfolge verwendet, die auf dem Formatbezeichner basiert. Einige Beispiele sind unten gezeigt.
#!/usr/bin/tclsh
puts [scan "90" {%[0-9]} m]
puts [scan "abc" {%[a-z]} m]
puts [scan "abc" {%[A-Z]} m]
puts [scan "ABC" {%[A-Z]} m]
Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:
1
1
0
1
Liste ist einer der grundlegenden Datentypen, die in Tcl verfügbar sind. Es wird zur Darstellung einer geordneten Sammlung von Artikeln verwendet. Es kann verschiedene Arten von Elementen in derselben Liste enthalten. Ferner kann eine Liste eine andere Liste enthalten.
Ein wichtiger Punkt ist, dass diese Listen vollständig als Zeichenfolgen dargestellt und bei Bedarf zu einzelnen Elementen verarbeitet werden. Vermeiden Sie also große Listen und in solchen Fällen; Array verwenden.
Liste erstellen
Die allgemeine Syntax für die Liste ist unten angegeben -
set listName { item1 item2 item3 .. itemn }
# or
set listName [list item1 item2 item3]
# or
set listName [split "items separated by a character" split_character]
Einige Beispiele sind unten angegeben -
#!/usr/bin/tclsh
set colorList1 {red green blue}
set colorList2 [list red green blue]
set colorList3 [split "red_green_blue" _]
puts $colorList1
puts $colorList2 puts $colorList3
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
red green blue
red green blue
red green blue
Element an eine Liste anhängen
Die Syntax zum Anhängen eines Elements an eine Liste ist unten angegeben:
append listName split_character value
# or
lappend listName value
Einige Beispiele sind unten angegeben -
#!/usr/bin/tclsh
set var orange
append var " " "blue"
lappend var "red"
lappend var "green"
puts $var
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
orange blue red green
Länge der Liste
Die Syntax für die Länge der Liste ist unten angegeben -
llength listName
Beispiel für die Länge der Liste ist unten angegeben -
#!/usr/bin/tclsh
set var {orange blue red green}
puts [llength $var]
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
4
Listenelement im Index
Die Syntax zum Auswählen eines Listenelements an einem bestimmten Index ist unten angegeben:
lindex listname index
Beispiel für Listeneintrag am Index ist unten angegeben -
#!/usr/bin/tclsh
set var {orange blue red green}
puts [lindex $var 1]
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
blue
Element am Index einfügen
Die Syntax zum Einfügen von Listenelementen an einem bestimmten Index ist unten angegeben.
linsert listname index value1 value2..valuen
Ein Beispiel für das Einfügen eines Listenelements an einem bestimmten Index ist unten angegeben.
#!/usr/bin/tclsh
set var {orange blue red green}
set var [linsert $var 3 black white]
puts $var
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
orange blue red black white green
Elemente an Indizes ersetzen
Die Syntax zum Ersetzen von Listenelementen an bestimmten Indizes ist unten angegeben:
lreplace listname firstindex lastindex value1 value2..valuen
Ein Beispiel zum Ersetzen von Listenelementen an bestimmten Indizes ist unten angegeben.
#!/usr/bin/tclsh
set var {orange blue red green}
set var [lreplace $var 2 3 black white]
puts $var
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
orange blue black white
Set Item at Index
Die Syntax zum Festlegen des Listenelements an einem bestimmten Index ist unten angegeben:
lset listname index value
Ein Beispiel für das Setzen eines Listenelements auf einen bestimmten Index finden Sie unten -
#!/usr/bin/tclsh
set var {orange blue red green}
lset var 0 black
puts $var
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
black blue red green
Liste in Variablen umwandeln
Die Syntax zum Kopieren von Werten in Variablen ist unten angegeben -
lassign listname variable1 variable2.. variablen
Ein Beispiel für die Umwandlung einer Liste in Variablen finden Sie unten -
#!/usr/bin/tclsh
set var {orange blue red green}
lassign $var colour1 colour2 puts $colour1
puts $colour2
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
orange
blue
Eine Liste sortieren
Die Syntax zum Sortieren einer Liste ist unten angegeben -
lsort listname
Ein Beispiel zum Sortieren einer Liste finden Sie unten -
#!/usr/bin/tclsh
set var {orange blue red green}
set var [lsort $var]
puts $var
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
blue green orange red
Ein Wörterbuch ist eine Anordnung zum Zuordnen von Werten zu Schlüsseln. Die Syntax für das herkömmliche Wörterbuch ist unten dargestellt -
dict set dictname key value
# or
dict create dictname key1 value1 key2 value2 .. keyn valuen
Einige Beispiele zum Erstellen eines Wörterbuchs finden Sie unten -
#!/usr/bin/tclsh
dict set colours colour1 red
puts $colours
dict set colours colour2 green
puts $colours set colours [dict create colour1 "black" colour2 "white"] puts $colours
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
colour1 red
colour1 red colour2 green
colour1 black colour2 white
Größe des Diktats
Die Syntax zum Abrufen der Größe des Diktats ist unten dargestellt -
[dict size dictname]
Ein Beispiel zum Drucken der Größe ist unten dargestellt -
#!/usr/bin/tclsh
set colours [dict create colour1 "black" colour2 "white"]
puts [dict size $colours]
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
2
Wörterbuch-Iteration
Eine einfache Wörterbuchiteration zum Drucken von Schlüsseln und Werten des Wörterbuchs ist unten dargestellt -
#!/usr/bin/tclsh
set colours [dict create colour1 "black" colour2 "white"]
foreach item [dict keys $colours] {
set value [dict get $colours $item]
puts $value
}
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
black
white
Wert für Key in Dict
Die Syntax zum Abrufen des Werts für die Eingabe des Diktats ist unten dargestellt:
[dict get $dictname $keyname]
Ein Beispiel zum Abrufen des Werts für den Schlüssel finden Sie unten -
#!/usr/bin/tclsh
set colours [dict create colour1 "black" colour2 "white"]
set value [dict get $colours colour1]
puts $value
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
black
Alle Schlüssel im Diktat
Die Syntax zum Abrufen aller Tasten in dict ist unten dargestellt -
[dict keys $dictname]
Ein Beispiel zum Drucken aller Tasten ist unten dargestellt -
#!/usr/bin/tclsh
set colours [dict create colour1 "black" colour2 "white"]
set keys [dict keys $colours] puts $keys
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
colour1 colour2
Alle Werte in Dikt
Die Syntax zum Abrufen aller Werte in dict ist unten dargestellt:
[dict values $dictname]
Ein Beispiel zum Drucken aller Werte ist unten dargestellt -
#!/usr/bin/tclsh
set colours [dict create colour1 "black" colour2 "white"]
set values [dict values $colours]
puts $values
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
black white
Schlüssel existiert im Diktat
Die Syntax zum Überprüfen, ob ein Schlüssel in dict vorhanden ist, wird unten gezeigt -
[dict exists $dictname $key]
Ein Beispiel für die Überprüfung, ob ein Schlüssel in dict vorhanden ist, ist unten dargestellt.
#!/usr/bin/tclsh
set colours [dict create colour1 "black" colour2 "white"]
set result [dict exists $colours colour1]
puts $result
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
1
Prozeduren sind nichts anderes als Codeblöcke mit einer Reihe von Befehlen, die eine bestimmte wiederverwendbare Funktionalität bereitstellen. Es wird verwendet, um zu vermeiden, dass derselbe Code an mehreren Stellen wiederholt wird. Prozeduren entsprechen den in vielen Programmiersprachen verwendeten Funktionen und werden in Tcl mit Hilfe von zur Verfügung gestelltproc Befehl.
Die Syntax zum Erstellen einer einfachen Prozedur ist unten dargestellt:
proc procedureName {arguments} {
body
}
Ein einfaches Beispiel für die Vorgehensweise ist unten angegeben -
#!/usr/bin/tclsh
proc helloWorld {} {
puts "Hello, World!"
}
helloWorld
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
Hello, World!
Prozeduren mit mehreren Argumenten
Ein Beispiel für eine Prozedur mit Argumenten ist unten gezeigt -
#!/usr/bin/tclsh
proc add {a b} {
return [expr $a+$b]
}
puts [add 10 30]
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
40
Prozeduren mit variablen Argumenten
Ein Beispiel für eine Prozedur mit Argumenten ist unten gezeigt -
#!/usr/bin/tclsh
proc avg {numbers} {
set sum 0
foreach number $numbers {
set sum [expr $sum + $number]
}
set average [expr $sum/[llength $numbers]]
return $average
}
puts [avg {70 80 50 60}]
puts [avg {70 80 50 }]
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
65
66
Prozeduren mit Standardargumenten
Standardargumente werden verwendet, um Standardwerte bereitzustellen, die verwendet werden können, wenn kein Wert angegeben wird. Ein Beispiel für eine Prozedur mit Standardargumenten, die manchmal als implizite Argumente bezeichnet wird, ist unten dargestellt.
#!/usr/bin/tclsh
proc add {a {b 100} } {
return [expr $a+$b]
}
puts [add 10 30]
puts [add 10]
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
40
110
Rekursive Prozeduren
Ein Beispiel für rekursive Prozeduren ist unten dargestellt -
#!/usr/bin/tclsh
proc factorial {number} {
if {$number <= 1} {
return 1
}
return [expr $number * [factorial [expr $number - 1]]]
}
puts [factorial 3]
puts [factorial 5]
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
6
120
Pakete werden zum Erstellen wiederverwendbarer Codeeinheiten verwendet. Ein Paket besteht aus einer Sammlung von Dateien, die bestimmte Funktionen bereitstellen. Diese Dateisammlung wird durch einen Paketnamen identifiziert und kann mehrere Versionen derselben Dateien enthalten. Das Paket kann eine Sammlung von Tcl-Skripten, eine Binärbibliothek oder eine Kombination aus beiden sein.
Das Paket verwendet das Konzept des Namespace, um eine Kollision von Variablennamen und Prozedurnamen zu vermeiden. Weitere Informationen finden Sie in unserem nächsten ' Namespace' -Tutorial.
Paket erstellen
Ein Paket kann mit Hilfe von mindestens zwei Dateien erstellt werden. Eine Datei enthält den Paketcode. Andere Datei enthält die Indexpaketdatei zum Deklarieren Ihres Pakets.
Die Liste der Schritte zum Erstellen und Verwenden von Paketen ist unten angegeben.
SCHRITT 1: Code erstellen
Erstellen Sie Code für ein Paket in einem Ordner, z. B. HelloWorld. Lassen Sie die Datei HelloWorld.tcl mit dem unten gezeigten Code heißen -
# /Users/rajkumar/Desktop/helloworld/HelloWorld.tcl
# Create the namespace
namespace eval ::HelloWorld {
# Export MyProcedure
namespace export MyProcedure
# My Variables
set version 1.0
set MyDescription "HelloWorld"
# Variable for the path of the script
variable home [file join [pwd] [file dirname [info script]]]
}
# Definition of the procedure MyProcedure
proc ::HelloWorld::MyProcedure {} {
puts $HelloWorld::MyDescription } package provide HelloWorld $HelloWorld::version
package require Tcl 8.0
SCHRITT 2: Paketindex erstellen
Öffnen Sie tclsh. Wechseln Sie in das HelloWorld-Verzeichnis und verwenden Sie den Befehl pkg_mkIndex, um die Indexdatei wie unten gezeigt zu erstellen.
% cd /Users/rajkumar/Desktop/helloworld
% pkg_mkIndex . *.tcl
SCHRITT 3: Hinzufügen eines Verzeichnisses zu Autopath
Verwenden Sie den Befehl lappend, um das Paket wie unten gezeigt zur globalen Liste hinzuzufügen.
% lappend auto_path "/Users/rajkumar/Desktop/helloworld"
SCHRITT 4: Paket hinzufügen
Als nächstes fügen Sie dem Programm ein Paket hinzu, indem Sie die Anweisung package require wie unten gezeigt verwenden.
% package require HelloWorld 1.0
SCHRITT 5: Prozedur aufrufen
Nachdem alles eingerichtet ist, können wir unsere Prozedur wie unten gezeigt aufrufen -
% puts [HelloWorld::MyProcedure]
Sie erhalten folgendes Ergebnis:
HelloWorld
Die ersten beiden Schritte erstellen das Paket. Sobald das Paket erstellt wurde, können Sie es in jeder Tcl-Datei verwenden, indem Sie die letzten drei Anweisungen wie unten gezeigt hinzufügen.
lappend auto_path "/Users/rajkumar/Desktop/helloworld"
package require HelloWorld 1.0
puts [HelloWorld::MyProcedure]
Sie erhalten folgendes Ergebnis:
HelloWorld
Der Namespace ist ein Container für eine Reihe von Bezeichnern, mit denen Variablen und Prozeduren gruppiert werden. Namespaces sind ab Tcl Version 8.0 verfügbar. Vor der Einführung der Namespaces gab es einen einzigen globalen Bereich. Mit Namespaces haben wir jetzt zusätzliche Partitionen mit globalem Geltungsbereich.
Namespace erstellen
Namespaces werden mit dem erstellt namespaceBefehl. Ein einfaches Beispiel zum Erstellen eines Namespace ist unten dargestellt:
#!/usr/bin/tclsh
namespace eval MyMath {
# Create a variable inside the namespace
variable myResult
}
# Create procedures inside the namespace
proc MyMath::Add {a b } {
set ::MyMath::myResult [expr $a + $b]
}
MyMath::Add 10 23
puts $::MyMath::myResult
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
33
Im obigen Programm sehen Sie, dass es einen Namespace mit einer Variablen gibt myResult und ein Verfahren Add. Auf diese Weise können Variablen und Prozeduren mit demselben Namen unter verschiedenen Namespaces erstellt werden.
Verschachtelte Namespaces
Tcl ermöglicht das Verschachteln von Namespaces. Ein einfaches Beispiel für das Verschachteln von Namespaces finden Sie unten -
#!/usr/bin/tclsh
namespace eval MyMath {
# Create a variable inside the namespace
variable myResult
}
namespace eval extendedMath {
# Create a variable inside the namespace
namespace eval MyMath {
# Create a variable inside the namespace
variable myResult
}
}
set ::MyMath::myResult "test1"
puts $::MyMath::myResult
set ::extendedMath::MyMath::myResult "test2"
puts $::extendedMath::MyMath::myResult
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
test1
test2
Namespace importieren und exportieren
Wie Sie in den vorherigen Namespace-Beispielen sehen können, verwenden wir viele Operatoren für die Bereichsauflösung und die Verwendung ist komplexer. Wir können dies vermeiden, indem wir Namespaces importieren und exportieren. Ein Beispiel ist unten angegeben -
#!/usr/bin/tclsh
namespace eval MyMath {
# Create a variable inside the namespace
variable myResult
namespace export Add
}
# Create procedures inside the namespace
proc MyMath::Add {a b } {
return [expr $a + $b]
}
namespace import MyMath::*
puts [Add 10 30]
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
40
Namespace vergessen
Sie können einen importierten Namespace mithilfe von entfernen forgetUnterbefehl. Ein einfaches Beispiel ist unten gezeigt -
#!/usr/bin/tclsh
namespace eval MyMath {
# Create a variable inside the namespace
variable myResult
namespace export Add
}
# Create procedures inside the namespace
proc MyMath::Add {a b } {
return [expr $a + $b]
}
namespace import MyMath::*
puts [Add 10 30]
namespace forget MyMath::*
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
40
Tcl unterstützt die Dateiverwaltung mithilfe der integrierten Befehle zum Öffnen, Lesen, Einfügen, Abrufen und Schließen.
Eine Datei stellt eine Folge von Bytes dar, unabhängig davon, ob es sich um eine Textdatei oder eine Binärdatei handelt.
Dateien öffnen
Tcl verwendet den Befehl open, um Dateien in Tcl zu öffnen. Die Syntax zum Öffnen einer Datei lautet wie folgt:
open fileName accessMode
Hier, filename ist ein String-Literal, mit dem Sie Ihre Datei und benennen accessMode kann einen der folgenden Werte haben -
Sr.Nr. | Modus & Beschreibung |
---|---|
1 | r Öffnet eine vorhandene Textdatei zum Lesen und die Datei muss vorhanden sein. Dies ist der Standardmodus, der verwendet wird, wenn kein accessMode angegeben ist. |
2 | w Öffnet eine Textdatei zum Schreiben. Wenn sie nicht vorhanden ist, wird eine neue Datei erstellt, andernfalls wird die vorhandene Datei abgeschnitten. |
3 | a Öffnet eine Textdatei zum Schreiben im Anhänge-Modus und die Datei muss vorhanden sein. Hier beginnt Ihr Programm, Inhalte an den vorhandenen Dateiinhalt anzuhängen. |
4 | r+ Öffnet eine Textdatei zum Lesen und Schreiben. Datei muss bereits vorhanden sein. |
5 | w+ Öffnet eine Textdatei zum Lesen und Schreiben. Die Datei wird zuerst auf die Länge Null gekürzt, wenn sie vorhanden ist. Andernfalls wird die Datei erstellt, wenn sie nicht vorhanden ist. |
6 | a+ Öffnet eine Textdatei zum Lesen und Schreiben. Es erstellt die Datei, wenn sie nicht vorhanden ist. Das Lesen beginnt von vorne, aber das Schreiben kann nur angehängt werden. |
Eine Datei schließen
Verwenden Sie den Befehl close, um eine Datei zu schließen. Die Syntax für close lautet wie folgt:
close fileName
Jede Datei, die von einem Programm geöffnet wurde, muss geschlossen werden, wenn das Programm die Verwendung dieser Datei beendet hat. In den meisten Fällen müssen die Dateien nicht explizit geschlossen werden. Sie werden automatisch geschlossen, wenn Dateiobjekte automatisch beendet werden.
Eine Datei schreiben
Der Befehl Puts wird zum Schreiben in eine geöffnete Datei verwendet.
puts $filename "text to write"
Ein einfaches Beispiel zum Schreiben in eine Datei ist unten dargestellt.
#!/usr/bin/tclsh
set fp [open "input.txt" w+]
puts $fp "test" close $fp
Wenn der obige Code kompiliert und ausgeführt wird, wird eine neue Datei erstellt input.txt in dem Verzeichnis, unter dem es gestartet wurde (im Arbeitsverzeichnis des Programms).
Eine Datei lesen
Es folgt der einfache Befehl zum Lesen aus einer Datei:
set file_data [read $fp]
Ein vollständiges Beispiel für Lesen und Schreiben finden Sie unten -
#!/usr/bin/tclsh
set fp [open "input.txt" w+]
puts $fp "test"
close $fp set fp [open "input.txt" r] set file_data [read $fp]
puts $file_data close $fp
Wenn der obige Code kompiliert und ausgeführt wird, liest er die im vorherigen Abschnitt erstellte Datei und erzeugt das folgende Ergebnis:
test
Hier ist ein weiteres Beispiel für das zeilenweise Lesen von Dateien bis zum Ende der Datei:
#!/usr/bin/tclsh
set fp [open "input.txt" w+]
puts $fp "test\ntest" close $fp
set fp [open "input.txt" r]
while { [gets $fp data] >= 0 } { puts $data
}
close $fp
Wenn der obige Code kompiliert und ausgeführt wird, liest er die im vorherigen Abschnitt erstellte Datei und erzeugt das folgende Ergebnis:
test
test
Die Fehlerbehandlung in Tcl wird mit Hilfe von bereitgestellt error und catchBefehle. Die Syntax für jeden dieser Befehle ist unten dargestellt.
Fehlersyntax
error message info code
In der obigen Fehlerbefehlssyntax ist message die Fehlermeldung, info wird in der globalen Variablen errorInfo festgelegt und Code wird in der globalen Variablen errorCode festgelegt.
Catch-Syntax
catch script resultVarName
In der obigen Syntax des Befehls catch ist script der auszuführende Code, resultVarName ist eine Variable, die den Fehler oder das Ergebnis enthält. Der Befehl catch gibt 0 zurück, wenn kein Fehler vorliegt, und 1, wenn ein Fehler vorliegt.
Ein Beispiel für eine einfache Fehlerbehandlung ist unten dargestellt -
#!/usr/bin/tclsh
proc Div {a b} {
if {$b == 0} {
error "Error generated by error" "Info String for error" 401
} else {
return [expr $a/$b]
}
}
if {[catch {puts "Result = [Div 10 0]"} errmsg]} {
puts "ErrorMsg: $errmsg" puts "ErrorCode: $errorCode"
puts "ErrorInfo:\n$errorInfo\n" } if {[catch {puts "Result = [Div 10 2]"} errmsg]} { puts "ErrorMsg: $errmsg"
puts "ErrorCode: $errorCode" puts "ErrorInfo:\n$errorInfo\n"
}
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
ErrorMsg: Error generated by error
ErrorCode: 401
ErrorInfo:
Info String for error
(procedure "Div" line 1)
invoked from within
"Div 10 0"
Result = 5
Wie Sie im obigen Beispiel sehen können, können wir unsere eigenen benutzerdefinierten Fehlermeldungen erstellen. Ebenso ist es möglich, den von Tcl erzeugten Fehler abzufangen. Ein Beispiel ist unten gezeigt -
#!/usr/bin/tclsh
catch {set file [open myNonexistingfile.txt]} result
puts "ErrorMsg: $result" puts "ErrorCode: $errorCode"
puts "ErrorInfo:\n$errorInfo\n"
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
ErrorMsg: couldn't open "myNonexistingfile.txt": no such file or directory
ErrorCode: POSIX ENOENT {no such file or directory}
ErrorInfo:
couldn't open "myNonexistingfile.txt": no such file or directory
while executing
"open myNonexistingfile.txt"
Tcl bietet eine Reihe von integrierten Funktionen (Prozeduren) für verschiedene Operationen. Dies beinhaltet -
Funktionen zur Listenbehandlung .
Funktionen für die Zeichenfolgenbehandlung .
Funktionen für die Array- Behandlung.
Funktionen für die Wörterbuchbehandlung .
Funktionen für die Datei-E / A- Behandlung.
Funktionen zum Erstellen von Namespaces und Paketen.
Funktionen für mathematische Operationen.
Funktionen für Systemoperationen.
Alle oben genannten Funktionen mit Ausnahme der Mathematik- und Systemfunktionen werden in früheren Kapiteln behandelt. Die in Mathematik und System integrierten Funktionen werden unten erläutert.
Mathematische Funktionen
Die in Tcl verfügbaren mathematischen Funktionen sind in der folgenden Tabelle aufgeführt:
Sr.Nr. | Methode & Beschreibung |
---|---|
1 | abs arg Berechnet den absoluten Wert von arg. |
2 | acos arg Berechnet das Arccosin von arg. |
3 | asin arg Berechnet den Arkussinus von arg. |
4 | atan arg Berechnet den Arkustangens von arg. |
5 | atan2 yx Berechnet den Arkustangens des Quotienten seiner Argumente (y / x). |
6 | ceil arg Berechnet die kleinste Ganzzahl, die größer oder gleich einer Zahl ist. |
7 | cos arg Berechnet den Cosinus von arg. |
8 | cosh arg Berechnet den hyperbolischen Cosinus von arg. |
9 | double arg Berechnet, ob arg ein Gleitkommawert ist, gibt arg zurück, konvertiert andernfalls arg in Gleitkomma und gibt den konvertierten Wert zurück. |
10 | exp arg Berechnet eine Exponentialfunktion (e erhöht auf die Potenz von arg). |
11 | floor arg Berechnet die größte Ganzzahl kleiner oder gleich arg. |
12 | fmod xy Berechnet den Gleitkomma-Rest der Division von x durch y. Wenn y 0 ist, wird ein Fehler zurückgegeben. |
13 | hypot xy Berechnet die Länge der Hypotenuse eines rechtwinkligen Dreiecksquadrats (x * x + y * y). |
14 | int arg Berechnet, ob arg ein ganzzahliger Wert mit der gleichen Breite wie das Maschinenwort ist, gibt arg zurück und konvertiert andernfalls arg in eine Ganzzahl. |
15 | log arg Berechnet den natürlichen Logarithmus von arg. |
16 | log10 arg Berechnet den Logarithmus zur Basis 10 von arg. |
17 | pow xy Berechnet den Wert von x, der auf die Potenz y angehoben wird. Wenn x negativ ist, muss y ein ganzzahliger Wert sein. |
18 | rand Berechnet eine Pseudozufallszahl zwischen 0 und 1. |
19 | round arg Berechnet den Wert von arg auf die nächste Ganzzahl gerundet. |
20 | sin arg Berechnet den Sinus von arg. |
21 | sinh arg Berechnet den hyperbolischen Sinus von arg. |
22 | sqrt arg Berechnet die Quadratwurzel von arg. arg muss positiv sein. |
23 | srand arg Berechnet eine Pseudozufallszahl zwischen 0 und 1. Das Argument, das eine Ganzzahl sein muss, wird verwendet, um den Startwert für den Zufallszahlengenerator von rand zurückzusetzen. |
24 | tan arg Berechnet die Tangente von arg. |
25 | tanh arg Berechnet den hyperbolischen Tangens von arg. |
26 | wide arg Berechnet einen ganzzahligen Wert von mindestens 64 Bit Breite (durch Vorzeichenerweiterung, wenn arg eine 32-Bit-Zahl ist) für arg, falls dies noch nicht der Fall ist. |
Einige Beispiele mit mathematischen Funktionen sind unten angegeben -
#!/usr/bin/tclsh
namespace import ::tcl::mathfunc::*
puts [tan 10]
puts [pow 10 2]
puts [ceil 10.34]
puts [hypot 10 20]
puts [srand 45]
puts [log 10]
puts [srand 45]
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
0.6483608274590866
100.0
11.0
22.360679774997898
0.0003521866166741525
2.302585092994046
0.0003521866166741525
Systemfunktionen
Die wichtigen Systemfunktionen in Tcl umfassen:
clock - Sekundenfunktion, die die aktuelle Zeit in Sekunden zurückgibt.
clock - Formatierungsfunktion, die die Sekunden in Datum und Uhrzeit formatiert.
clock - Scan-Funktion, die die Eingabezeichenfolge scannt und in Sekunden umwandelt.
open - Funktion, mit der eine Datei geöffnet wird.
exec - Funktion, mit der ein Systembefehl ausgeführt wird.
close - Funktion, mit der eine Datei geschlossen wird.
Einige Beispiele für die oben genannten Funktionen sind unten aufgeführt -
#!/usr/bin/tclsh
#get seconds
set currentTime [clock seconds]
puts $currentTime
#get format
puts "The time is: [clock format $currentTime -format %H:%M:%S]" puts "The date is: [clock format $currentTime -format %D]"
set date "Jun 15, 2014"
puts [clock scan $date -format {%b %d, %Y}] puts [exec ls] puts [exec dir] set a [open input.txt] puts [read $a];
puts $a close $a
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
1402819756
The time is: 03:09:16
The date is: 06/15/2014
1402808400
input.txt
main.tcl
input.txt main.tcl
This is the file you can use to provide input to your program and later on open
it inside your program to process the input.
file3
Die folgende Tabelle enthält die Listenzeichenfolgen, mit denen Datum und Uhrzeit formatiert werden können.
Sr.Nr. | Format & Beschreibung |
---|---|
1 | %a Tag in Kurzform, zB: Sonne. |
2 | %A Tag in voller Form zB: Sonntag. |
3 | %b Monat in Kurzform. |
4 | %B Monat in voller Form. |
5 | %d Monatstag. |
6 | %j Julianischer Tag des Jahres. |
7 | %m Monat in Anzahl. |
8 | %y Jahr zweistellig. |
9 | %Y Jahr in vier Ziffern. |
10 | %H Stunde im 24-Stunden-Takt. |
11 | %I Stunde im 12-Stunden-Takt. |
12 | %M Protokoll. |
13 | %S Sekunden. |
14 | %p Vormittags oder nachmittags. |
15 | %D Datum in Anzahl, MM / TT / JJ. |
16 | %r Zeit im 12-Stunden-Takt. |
17 | %R Zeit im 24-Stunden-Takt ohne Sekunden. |
18 | %T Zeit im 24-Stunden-Takt mit Sekunden. |
19 | %Z Zeitzonenname wie GMT, IST, EST und so weiter. |
Der Befehl "regexp" wird verwendet, um einem regulären Ausdruck in Tcl zu entsprechen. Ein regulärer Ausdruck ist eine Folge von Zeichen, die ein Suchmuster enthält. Es besteht aus mehreren Regeln und die folgende Tabelle erläutert diese Regeln und die entsprechende Verwendung.
Sr.Nr. | Regel & Beschreibung |
---|---|
1 | x Genaue Übereinstimmung. |
2 | [a-z] Beliebige Kleinbuchstaben von az. |
3 | . Beliebiger Charakter. |
4 | ^ Die Anfangszeichenfolge sollte übereinstimmen. |
5 | $ Die Endzeichenfolge sollte übereinstimmen. |
6 | \^ Spielsequenz passend zu Sonderzeichen ^. Ähnlich können Sie für andere Zeichen verwenden. |
7 | () Fügen Sie die obigen Sequenzen in Klammern hinzu, um einen regulären Ausdruck zu erhalten. |
8 | x* Sollte mit 0 oder mehr Vorkommen des vorhergehenden x übereinstimmen. |
9 | x+ Sollte mit einem oder mehreren Vorkommen des vorhergehenden x übereinstimmen. |
10 | [a-z]? Sollte mit 0 oder 1 Vorkommen des vorhergehenden x übereinstimmen. |
11 | {digit} Entspricht genau den Ziffernvorkommen des vorherigen regulären Ausdrucks. Ziffer, die 0-9 enthält. |
12 | {digit,} Entspricht 3 oder mehr Ziffernvorkommen des vorherigen regulären Ausdrucks. Ziffer, die 0-9 enthält. |
13 | {digit1,digit2} Vorkommen entspricht dem Bereich zwischen Vorkommen von Ziffer1 und Ziffer2 des vorherigen regulären Ausdrucks. |
Syntax
Die Syntax für Regex ist unten angegeben -
regexp optionalSwitches patterns searchString fullMatch subMatch1 ... subMatchn
Hier ist Regex der Befehl. Wir werden später über optionale Schalter sehen. Muster sind die Regeln, wie bereits erwähnt. Suchzeichenfolge ist die tatsächliche Zeichenfolge, für die der reguläre Ausdruck ausgeführt wird. Vollständige Übereinstimmung ist eine beliebige Variable, die das Ergebnis des übereinstimmenden Regex-Ergebnisses enthält. Submatch1 bis SubMatchn sind optionale SubMatch-Variablen, die das Ergebnis von Sub-Match-Mustern enthalten.
Schauen wir uns einige einfache Beispiele an, bevor wir uns mit komplexen befassen. Ein einfaches Beispiel für eine Zeichenfolge mit beliebigen Alphabeten. Wenn ein anderes Zeichen auf den regulären Ausdruck stößt, wird die Suche gestoppt und zurückgegeben.
#!/usr/bin/tclsh
regexp {([A-Za-z]*)} "Tcl Tutorial" a b
puts "Full Match: $a"
puts "Sub Match1: $b"
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
Full Match: Tcl
Sub Match1: Tcl
Mehrere Muster
Das folgende Beispiel zeigt, wie Sie nach mehreren Mustern suchen. Dies ist ein Beispielmuster für alle Alphabete, gefolgt von einem beliebigen Zeichen, gefolgt von einem beliebigen Alphabet.
#!/usr/bin/tclsh
regexp {([A-Za-z]*).([A-Za-z]*)} "Tcl Tutorial" a b c
puts "Full Match: $a"
puts "Sub Match1: $b" puts "Sub Match2: $c"
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
Full Match: Tcl Tutorial
Sub Match1: Tcl
Sub Match2: Tutorial
Eine modifizierte Version des obigen Codes, um zu zeigen, dass ein Untermuster mehrere Muster enthalten kann, wird unten gezeigt -
#!/usr/bin/tclsh
regexp {([A-Za-z]*.([A-Za-z]*))} "Tcl Tutorial" a b c
puts "Full Match: $a" puts "Sub Match1: $b"
puts "Sub Match2: $c"
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
Full Match: Tcl Tutorial
Sub Match1: Tcl Tutorial
Sub Match2: Tutorial
Schalter für Regex-Befehl
Die Liste der in Tcl verfügbaren Schalter ist:
nocase - Wird verwendet, um Groß- und Kleinschreibung zu ignorieren.
indices - Speichern Sie die Position übereinstimmender Untermuster anstelle übereinstimmender Zeichen.
line- Neue zeilensensitive Übereinstimmung. Ignoriert die Zeichen nach dem Zeilenumbruch.
start index - Legt den Versatz des Starts des Suchmusters fest.
Markiert das Ende der Schalter
In den obigen Beispielen habe ich absichtlich [AZ, az] für alle Alphabete verwendet. Sie können einfach -nocase anstelle der unten gezeigten verwenden.
#!/usr/bin/tclsh
regexp -nocase {([A-Z]*.([A-Z]*))} "Tcl Tutorial" a b c
puts "Full Match: $a"
puts "Sub Match1: $b" puts "Sub Match2: $c"
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
Full Match: Tcl Tutorial
Sub Match1: Tcl Tutorial
Sub Match2: Tutorial
Ein weiteres Beispiel für die Verwendung von Schaltern ist unten dargestellt.
#!/usr/bin/tclsh
regexp -nocase -line -- {([A-Z]*.([A-Z]*))} "Tcl \nTutorial" a b
puts "Full Match: $a" puts "Sub Match1: $b"
regexp -nocase -start 4 -line -- {([A-Z]*.([A-Z]*))} "Tcl \nTutorial" a b
puts "Full Match: $a" puts "Sub Match1: $b"
Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:
Full Match: Tcl
Sub Match1: Tcl
Full Match: Tutorial
Sub Match1: Tutorial
Tk bezieht sich auf Toolkit und bietet plattformübergreifende GUI-Widgets, mit denen Sie eine grafische Benutzeroberfläche erstellen können. Es wurde als Erweiterung der Tcl-Skriptsprache von John Ousterhout entwickelt. Tk blieb unabhängig von Tcl in der Entwicklung, wobei die Version unterschiedlich war, bevor es in Version 8.0 synchron mit Tcl erstellt wurde.
Eigenschaften von Tk
Es ist plattformübergreifend und unterstützt die Betriebssysteme Linux, Mac OS, Unix und Microsoft Windows.
- Es ist eine Open Source.
- Es bietet ein hohes Maß an Erweiterbarkeit.
- Es ist anpassbar.
- Es ist konfigurierbar.
- Es bietet eine große Anzahl von Widgets.
- Es kann mit anderen dynamischen Sprachen und nicht nur mit Tcl verwendet werden.
- Die Benutzeroberfläche sieht plattformübergreifend identisch aus.
Anwendungen gebaut in Tk
In Tcl / Tk wurden große erfolgreiche Anwendungen erstellt.
- Dashboard Soft Benutzeroberfläche
- Forms GUI für relationale Datenbank
- Ad-hoc-Benutzeroberfläche für die relationale Datenbank
- Software- / Hardware-Systemdesign
- Xtask - Aufgabenverwaltung
- Musikwissenschaft mit Tcl und Tk
- Kalender App
- Tk Mail
- Tk Debugger
Im Allgemeinen ist auf allen Mac- und Linux-Macs Tk vorinstalliert. Falls es nicht verfügbar ist oder Sie die neueste Version benötigen, müssen Sie es möglicherweise installieren. Windows wird nicht mit Tcl / Tk geliefert, und Sie müssen möglicherweise die spezifische Binärdatei verwenden, um es zu installieren.
Der Tk-Dolmetscher
Es ist nur ein kleines Programm, mit dem Sie Tk-Befehle eingeben und zeilenweise ausführen lassen können. Es stoppt die Ausführung einer tcl-Datei, falls im Gegensatz zu einem Compiler, der vollständig ausgeführt wird, ein Fehler auftritt.
Lassen Sie uns eine helloWorld.tcl-Datei wie folgt haben. Wir werden dies als erstes Programm verwenden, wir laufen auf der von Ihnen gewählten Plattform.
#!/usr/bin/wish
grid [ttk::button .mybutton -text "Hello World"]
Im folgenden Abschnitt wird nur erläutert, wie Sie Tcl / Tk auf jeder der verfügbaren Plattformen installieren.
Installation unter Windows
Laden Sie die neueste Version für Windows Installer aus der Liste der verfügbaren Active Tcl / Tk-Binärdateien herunter . Die Active Tcl / Tk Community Edition ist für den persönlichen Gebrauch kostenlos.
Führen Sie die heruntergeladene ausführbare Datei aus, um Tcl und Tk zu installieren. Befolgen Sie dazu die Anweisungen auf dem Bildschirm.
Jetzt können wir eine Tcl-Datei erstellen und ausführen, z. B. helloWorld.tcl, indem wir mit cd in einen Ordner mit der Datei wechseln und dann den folgenden Schritt ausführen:
C:\Tcl> wish helloWorld.tcl
Drücken Sie die Eingabetaste und wir sehen eine Ausgabe wie unten gezeigt -
Installation unter Linux
Die meisten Linux-Betriebssysteme sind mit Tk ausgestattet, und Sie können sofort mit diesen Systemen beginnen. Falls es nicht verfügbar ist, können Sie den folgenden Befehl verwenden, um Tcl-Tk herunterzuladen und zu installieren.
$ yum install tcl tk
Jetzt können wir eine Tcl-Datei erstellen und ausführen, z. B. helloWorld.tcl, indem wir mit in den Ordner wechseln, der die Datei enthält cd command und dann mit dem folgenden Schritt -
$ wish helloWorld.tcl
Drücken Sie die Eingabetaste und wir sehen eine Ausgabe ähnlich der folgenden -
Installation auf Debian-basierten Systemen
Falls es in Ihrem Betriebssystem nicht vorgefertigt verfügbar ist, können Sie den folgenden Befehl verwenden, um Tcl-Tk herunterzuladen und zu installieren:
$ sudo apt-get install tcl tk
Jetzt können wir eine Tcl-Datei erstellen und ausführen, z. B. helloWorld.tcl, indem wir mit in den Ordner wechseln, der die Datei enthält cd command und dann mit den folgenden Schritten -
$ wish helloWorld.tcl
Drücken Sie die Eingabetaste und wir sehen eine Ausgabe ähnlich der folgenden -
Installation unter Mac OS X.
Laden Sie die neueste Version für Mac OS X - Paket aus der Liste der aktiven Tcl / Tk - Binärdateien zur Verfügung. Die Active Tcl Community Edition ist für den persönlichen Gebrauch kostenlos.
Führen Sie die heruntergeladene ausführbare Datei aus, um Active Tcl zu installieren. Befolgen Sie dazu die Anweisungen auf dem Bildschirm.
Jetzt können wir eine Tcl-Datei erstellen und ausführen, z. B. helloWorld.tcl, indem wir mit in den Ordner wechseln, der die Datei enthält cd command und dann mit dem folgenden Schritt -
$ wish helloWorld.tcl
Drücken Sie die Eingabetaste und wir sehen eine Ausgabe wie unten gezeigt -
Installation aus Quelldateien
Sie können die Option zum Installieren aus Quelldateien verwenden, wenn kein Binärpaket verfügbar ist. Es wird im Allgemeinen bevorzugt, Tk-Binärdateien für Windows und Mac OS X zu verwenden, daher wird im Folgenden nur die Kompilierung von Quellen auf einem Unix-basierten System angezeigt.
Laden Sie die Quelldateien herunter .
Verwenden Sie nun die folgenden Befehle zum Extrahieren, Kompilieren und Erstellen, nachdem Sie in den heruntergeladenen Ordner gewechselt haben.
$ tar zxf tk8.6.1-src.tar.gz
$ cd tcl8.6.1 $ cd unix
$ ./configure —with-tcl=../../tcl8.6.1/unix —prefix=/opt —enable-gcc $ make
$ sudo make install
Note - Stellen Sie sicher, dass Sie den Dateinamen in die Version ändern, die Sie oben mit den Befehlen 1 und 2 heruntergeladen haben.
In Tk klassifizieren wir einige der Variablen als spezielle Variablen und sie haben eine vordefinierte Verwendung / Funktionalität. Die Liste der speziellen Variablen ist unten aufgeführt.
Sr.Nr. | Spezielle Variable & Beschreibung |
---|---|
1 | tk_library Wird zum Festlegen des Speicherorts von Standard-Tk-Bibliotheken verwendet. |
2 | tk_patchLevel Bezieht sich auf die aktuelle Patch-Ebene des Tk-Interpreters. |
3 | tk_strictMotif Wenn Tk nicht Null ist, versucht er, das Erscheinungsbild von Motif so genau wie möglich einzuhalten. |
4 | tk_version Zeigt die Tk-Version an. |
Die obigen speziellen Variablen haben ihre spezielle Bedeutung für den Tk-Interpreter.
Beispiele für die Verwendung von Tk-Spezialvariablen
Sehen wir uns die Beispiele für spezielle Variablen an.
TK-VERSION
#!/usr/bin/wish
puts $tk_version
Wenn Sie das Programm ausführen, erhalten Sie eine ähnliche Ausgabe wie unten gezeigt.
8.5
TK BIBLIOTHEK PFAD
#!/usr/bin/wish
puts $tk_library
Wenn Sie das Programm ausführen, erhalten Sie eine ähnliche Ausgabe wie unten gezeigt.
/Library/Frameworks/Tk.framework/Versions/8.6/Resources/Scripts
TK PATCH LEVEL
#!/usr/bin/wish
puts $tk_patchLevel
Wenn Sie das Programm ausführen, erhalten Sie eine ähnliche Ausgabe wie unten gezeigt.
8.6.1
TK STRICTMOTIF
#!/usr/bin/wish
puts $tk_strictMotif
Wenn Sie das Programm ausführen, erhalten Sie eine ähnliche Ausgabe wie unten gezeigt.
0
Die Grundkomponente einer Tk-basierten Anwendung wird als Widget bezeichnet. Eine Komponente wird manchmal auch als Fenster bezeichnet, da in Tk "Fenster" und "Widget" häufig synonym verwendet werden. Tk ist ein Paket, das eine Vielzahl grafischer Komponenten zum Erstellen grafischer Anwendungen mit Tcl bietet.
Tk bietet eine Reihe von Widgets, die von einfachen GUI-Widgets wie Schaltflächen und Menüs bis hin zu Widgets für die Datenanzeige reichen. Die Widgets sind sehr konfigurierbar, da sie Standardkonfigurationen haben, die ihre Verwendung vereinfachen.
Tk-Anwendungen folgen einer Widget-Hierarchie, in der eine beliebige Anzahl von Widgets in einem anderen Widget und diese Widgets in einem anderen Widget platziert werden können. Das Haupt-Widget in einem Tk-Programm wird als Root-Widget bezeichnet und kann durch Erstellen einer neuen Instanz der TkRoot-Klasse erstellt werden.
Widget erstellen
Die Syntax zum Erstellen eines Widgets ist unten angegeben.
type variableName arguments options
Der Typ hier bezieht sich auf den Widget-Typ wie Schaltfläche, Beschriftung usw. Argumente können optional sein und basierend auf der individuellen Syntax jedes Widgets erforderlich sein. Die Optionen reichen von der Größe bis zur Formatierung jeder Komponente.
Widget-Namenskonvention
Widget verwendet eine ähnliche Struktur wie das Benennen von Paketen. In Tk wird das Stammfenster mit einem Punkt (.) Benannt und ein Element im Fenster, beispielsweise die Schaltfläche, heißt .myButton1. Der Variablenname sollte mit einem Kleinbuchstaben, einer Ziffer oder einem Satzzeichen beginnen (außer einem Punkt). Nach dem ersten Zeichen können andere Zeichen Groß- oder Kleinbuchstaben, Zahlen oder Satzzeichen sein (außer Punkte). Es wird empfohlen, zum Starten des Etiketts einen Kleinbuchstaben zu verwenden.
Farbbenennungskonvention
Die Farben können mit Namen wie Rot, Grün usw. deklariert werden. Es kann auch eine hexadezimale Darstellung mit # verwendet werden. Die Anzahl der hexadezimalen Ziffern kann 3, 6, 9 oder 12 sein.
Dimensionskonvention
Die Standardeinheit ist Pixel und wird verwendet, wenn keine Dimension angegeben wird. Die anderen Abmessungen sind i für Zoll, m für Millimeter, c für Zentimeter und p für Punkte.
Allgemeine Optionen
Allen Widgets stehen so viele gemeinsame Optionen zur Verfügung, die in der folgenden Tabelle aufgeführt sind:
Sr.Nr. | Syntax & Beschreibung |
---|---|
1 | -background color Dient zum Festlegen der Hintergrundfarbe für das Widget. |
2 | -borderwidth width Wird zum Zeichnen mit Rahmen in 3D-Effekten verwendet. |
3 | -font fontDescriptor Dient zum Festlegen der Schriftart für das Widget. |
4 | -foreground color Dient zum Festlegen der Vordergrundfarbe für das Widget. |
5 | -height number Wird verwendet, um die Höhe für das Widget festzulegen. |
6 | -highlightbackground color Dient zum Festlegen des Farbrechtecks zum Zeichnen um ein Widget, wenn das Widget keinen Eingabefokus hat. |
7 | -highlightcolor color Dient zum Festlegen des Farbrechtecks zum Zeichnen um ein Widget, wenn das Widget einen Eingabefokus hat. |
8 | -padx number Legt den Padx für das Widget fest. |
9 | -pady number Legt das Pady für das Widget fest. |
10 | -relief condition Legt das 3D-Relief für dieses Widget fest. Der Zustand kann erhöht, eingefallen, flach, kammig, fest oder gerillt sein. |
11 | -text text Legt den Text für das Widget fest. |
12 | -textvariable varName Mit dem Widget verknüpfte Variable. Wenn sich der Text des Widgets ändert, wird die Variable mit dem Text des Widgets festgelegt. |
13 | -width number Legt die Breite für das Widget fest. |
Ein einfaches Beispiel für Optionen ist unten dargestellt.
#!/usr/bin/wish
grid [label .myLabel -background red -text "Hello World" -relief ridge -borderwidth 3]
-padx 100 -pady 100
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe.
Die Liste der verfügbaren Widgets ist unten kategorisiert -
Grundlegende Widgets
Sr.Nr. | Widget & Beschreibung |
---|---|
1 | Label Widget zum Anzeigen einer einzelnen Textzeile. |
2 | Button Widget, das anklickbar ist und eine Aktion auslöst. |
3 | Entry Widget zum Akzeptieren einer einzelnen Textzeile als Eingabe. |
4 | Message Widget zum Anzeigen mehrerer Textzeilen. |
5 | Text Widget zum Anzeigen und optionalen Bearbeiten mehrerer Textzeilen. |
6 | Toplevel Fenster mit allen vom Fenstermanager bereitgestellten Rändern und Dekorationen. |
Layout-Widgets
Sr.Nr. | Widget & Beschreibung |
---|---|
1 | Frame Container-Widget für andere Widgets. |
2 | Place Widget zum Speichern anderer Widgets an einem bestimmten Ort mit Koordinaten seines Ursprungs und einer genauen Größe. |
3 | Pack Einfaches Widget zum Organisieren von Widgets in Blöcken, bevor sie im übergeordneten Widget platziert werden. |
4 | Grid Widget zum Verschachteln von Widgets, die in verschiedene Richtungen verpackt sind. |
Auswahl-Widgets
Sr.Nr. | Widget & Beschreibung |
---|---|
1 | Radiobutton Widget mit einer Reihe von Ein / Aus-Schaltflächen und Beschriftungen, von denen eine ausgewählt werden kann. |
2 | Checkbutton Widget mit einer Reihe von Ein / Aus-Schaltflächen und Beschriftungen, von denen viele ausgewählt werden können. |
3 | Menu Widget, das als Halter für Menüelemente fungiert. |
4 | Listbox Widget, das eine Liste von Zellen anzeigt, von denen eine oder mehrere ausgewählt werden können. |
Mega Widgets
Sr.Nr. | Widget & Beschreibung |
---|---|
1 | Dialog Widget zum Anzeigen von Dialogfeldern. |
2 | Spinbox Widget, mit dem Benutzer Zahlen auswählen können. |
3 | Combobox Widget, das einen Eintrag mit einer Liste von Auswahlmöglichkeiten kombiniert. |
4 | Notebook Widget mit Registerkarten, mit dessen Hilfe Sie mithilfe einer Indexregisterkarte zwischen mehreren Seiten wechseln können. |
5 | Progressbar Widget, um visuelles Feedback zum Fortschritt eines langen Vorgangs wie dem Hochladen von Dateien zu geben. |
6 | Treeview Widget zum Anzeigen und Durchsuchen einer Hierarchie von Elementen in Form eines Baums. |
7 | Scrollbar Scrollen von Widgets ohne Text- oder Canvas-Widgets. |
8 | Scale Skalieren Sie das Widget, um einen numerischen Wert über Schieberegler auszuwählen. |
Andere Widgets
Sr.Nr. | Widget & Beschreibung |
---|---|
1 | Canvas Zeichen-Widget zum Anzeigen von Grafiken und Bildern. |
Wir werden jedes dieser Widgets in den kommenden Kapiteln behandeln.
Grundlegende Widgets sind gängige Widgets, die in fast allen Tk-Anwendungen verfügbar sind. Die Liste der verfügbaren Basis-Widgets finden Sie unten -
Sr.Nr. | Widgets & Beschreibung |
---|---|
1 | Etikette Widget zum Anzeigen einer einzelnen Textzeile. |
2 | Taste Widget, das anklickbar ist und eine Aktion auslöst. |
3 | Eintrag Widget zum Akzeptieren einer einzelnen Textzeile als Eingabe. |
4 | Botschaft Widget zum Anzeigen mehrerer Textzeilen. |
5 | Text Widget zum Anzeigen und optionalen Bearbeiten mehrerer Textzeilen. |
6 | Höchststufe Widget zum Erstellen eines Rahmens, der ein neues Fenster der obersten Ebene darstellt. |
Ein einfaches Tk-Beispiel wird unten mit grundlegenden Widgets gezeigt -
#!/usr/bin/wish
grid [label .myLabel -text "Label Widget" -textvariable labelText]
grid [text .myText -width 20 -height 5]
.myText insert 1.0 "Text\nWidget\n"
grid [entry .myEntry -text "Entry Widget"]
grid [message .myMessage -background red -foreground white -text "Message\nWidget"]
grid [button .myButton1 -text "Button" -command "set labelText clicked"]
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:
Layout-Widgets werden verwendet, um Layouts für die Tk-Anwendung zu verwalten. Das Rahmen-Widget wird verwendet, um andere Widgets zu gruppieren. Platzieren, Packen und Raster sind Layout-Manager, um Ihnen die vollständige Kontrolle über das Hinzufügen zu Fenstern zu geben. Die Liste der verfügbaren Layout-Widgets ist wie folgt:
Sr.Nr. | Widgets & Beschreibung |
---|---|
1 | Rahmen Container-Widget für andere Widgets. |
2 | Ort Widget zum Speichern anderer Widgets an einem bestimmten Ort mit Koordinaten seines Ursprungs und einer genauen Größe. |
3 | Pack Einfaches Widget zum Organisieren von Widgets in Blöcken, bevor sie im übergeordneten Widget platziert werden. |
4 | Gitter Widget zum Verschachteln von Widgets, die in verschiedene Richtungen verpackt sind. |
Ein einfaches Tk-Beispiel für Layout-Widgets ist unten dargestellt.
#!/usr/bin/wish
frame .myFrame1 -background red -relief ridge -borderwidth 8 -padx 10 -pady 10
-height 100 -width 100
frame .myFrame2 -background blue -relief ridge -borderwidth 8 -padx 10 -pady 10
-height 100 -width 50
pack .myFrame1
pack .myFrame2
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:
Auswahl-Widgets werden verwendet, um verschiedene Optionen in einer Tk-Anwendung auszuwählen. Die Liste der verfügbaren Auswahl-Widgets ist unten dargestellt.
Sr.Nr. | Widgets & Beschreibung |
---|---|
1 | Radio knopf Widget mit einer Reihe von Ein / Aus-Schaltflächen und Beschriftungen, von denen eine ausgewählt werden kann. |
2 | Checkbutton Widget mit einer Reihe von Ein / Aus-Schaltflächen und Beschriftungen, von denen viele ausgewählt werden können. |
3 | Speisekarte Widget, das als Halter für Menüelemente fungiert. |
4 | Listbox Widget, das eine Liste von Zellen anzeigt, von denen eine oder mehrere ausgewählt werden können. |
Ein einfaches Tk-Beispiel wird unten mit Auswahl-Widgets gezeigt -
#!/usr/bin/wish
grid [frame .gender ]
grid [label .label1 -text "Male" -textvariable myLabel1 ]
grid [radiobutton .gender.maleBtn -text "Male" -variable gender -value "Male"
-command "set myLabel1 Male"] -row 1 -column 2
grid [radiobutton .gender.femaleBtn -text "Female" -variable gender -value "Female"
-command "set myLabel1 Female"] -row 1 -column 3
.gender.maleBtn select
grid [label .myLabel2 -text "Range 1 not selected" -textvariable myLabelValue2 ]
grid [checkbutton .chk1 -text "Range 1" -variable occupied1 -command {if {$occupied1 } {
set myLabelValue2 {Range 1 selected}
} else {
set myLabelValue2 {Range 1 not selected}
} }]
proc setLabel {text} {
.label configure -text $text
}
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:
Leinwand wird zum Bereitstellen von Zeichenbereichen verwendet. Die Syntax für das Canvas-Widget ist unten dargestellt:
canvas canvasName options
Optionen
Die für das Canvas-Widget verfügbaren Optionen sind in der folgenden Tabelle aufgeführt:
Sr.Nr. | Syntax & Beschreibung |
---|---|
1 | -background color Dient zum Festlegen der Hintergrundfarbe für das Widget. |
2 | -closeenough distance Legt die Nähe des Mauszeigers zu einem anzeigbaren Element fest. Der Standardwert ist 1,0 Pixel. Dieser Wert kann ein Bruchteil sein und muss positiv sein. |
3 | -scrollregion boundingBox Der Begrenzungsrahmen für die Gesamtfläche dieser Leinwand. |
4 | -height number Wird verwendet, um die Höhe für das Widget festzulegen. |
5 | -width number Legt die Breite für das Widget fest. |
6 | -xscrollincrement size Der Betrag, der beim Scrollen horizontal gescrollt werden soll. |
7 | -yscrollincrement size Der Betrag, der beim Scrollen vertikal gescrollt werden soll, wird angefordert. |
Ein einfaches Beispiel für ein Canvas-Widget ist unten dargestellt.
#!/usr/bin/wish
canvas .myCanvas -background red -width 100 -height 100
pack .myCanvas
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:
Widgets zum Zeichnen in Leinwand
Die Liste der verfügbaren Widgets zum Zeichnen in Leinwand ist unten aufgeführt -
Sr.Nr. | Widget & Beschreibung |
---|---|
1 | Linie Zeichnet eine Linie. |
2 | Bogen Zeichnet einen Bogen. |
3 | Rechteck Zeichnet ein Rechteck. |
4 | Oval Zeichnet ein Oval. |
5 | Polygon Zeichnet ein Polygon. |
6 | Text Zeichnet einen Text. |
7 | Bitmap Zeichnet eine Bitmap. |
8 | Bild Zeichnet ein Bild. |
Ein Beispiel für die Verwendung verschiedener Canvas-Widgets ist unten dargestellt.
#!/usr/bin/wish
canvas .myCanvas -background red -width 200 -height 200
pack .myCanvas
.myCanvas create arc 10 10 50 50 -fill yellow
.myCanvas create line 10 30 50 50 100 10 -arrow both -fill yellow -smooth true
-splinesteps 2
.myCanvas create oval 50 50 100 80 -fill yellow
.myCanvas create polygon 50 150 100 80 120 120 100 190 -fill yellow -outline green
.myCanvas create rectangle 150 150 170 170 -fill yellow
.myCanvas create text 170 20 -fill yellow -text "Hello" -font {Helvetica -18 bold}
.myCanvas create bitmap 180 50 -bitmap info
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:
Mega-Widgets enthalten viele komplexe Widgets, die in einigen großen Tk-Anwendungen häufig benötigt werden. Die Liste der verfügbaren Mega-Widgets ist wie folgt:
Sr.Nr. | Widget & Beschreibung |
---|---|
1 | Dialog Widget zum Anzeigen von Dialogfeldern. |
2 | Spinbox Widget, mit dem Benutzer Zahlen auswählen können. |
3 | Kombinationsfeld Widget, das einen Eintrag mit einer Liste von Auswahlmöglichkeiten kombiniert. |
4 | Notizbuch Widget mit Registerkarten, mit dessen Hilfe Sie mithilfe einer Indexregisterkarte zwischen mehreren Seiten wechseln können. |
5 | Fortschrittsanzeige Widget, um visuelles Feedback zum Fortschritt eines langen Vorgangs wie dem Hochladen von Dateien zu geben. |
6 | Baumsicht Widget zum Anzeigen und Durchsuchen einer Hierarchie von Elementen in Form eines Baums. |
7 | Scrollleiste Scrollen von Widgets ohne Text- oder Canvas-Widgets. |
8 | Rahmen Skalieren Sie das Widget, um einen numerischen Wert über Schieberegler auszuwählen. |
Ein einfaches Tk-Beispiel wird unten mit einigen Mega-Widgets gezeigt.
#!/usr/bin/wish
ttk::treeview .tree -columns "Creator Year" -displaycolumns "Year Creator"
.tree heading Creator -text "Creator" -anchor center
.tree heading Year -text "Year" -anchor center
pack .tree
.tree insert {} end -id Languages -text "Languages"
.tree insert Languages end -text C -values [list "Dennis Ritchie" "1990"]
proc scaleMe {mywidget scaleValue} {
$mywidget configure -length $scaleValue
}
pack [scale .s2 -from 100.0 -to 200.0 -length 100 -background yellow -borderwidth 5
-font{Helvetica -18 bold} -foreground red -width 40 -relief ridge -orien horizontal
-variable a -command "scaleMe .s2" ]
pack [ttk::progressbar .p1 -orient horizontal -length 200 -mode indeterminate -value 90]
pack [ttk::progressbar .p2 -orient horizontal -length 200 -mode determinate -variable a
-maximum 75 -value 20]
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:
Es gibt eine Reihe von Widgets, die die Anzeige von Text unterstützen. Die meisten davon bieten die Option eines Schriftattributs. Die Syntax zum Erstellen einer Schriftart ist unten dargestellt -
font create fontName options
Optionen
Die für die Erstellung von Schriftarten verfügbaren Optionen sind in der folgenden Tabelle aufgeführt:
Sr.Nr. | Syntax & Beschreibung |
---|---|
1 | -family familyName Der Name der Schriftfamilie. |
2 | -size number Die Schriftgröße. |
3 | -weight level Das Gewicht für die Schriftart. |
Ein einfaches Beispiel für eine Schriftartenerstellung ist unten dargestellt -
#!/usr/bin/wish
font create myFont -family Helvetica -size 18 -weight bold
pack [label .myLabel -font myFont -text "Hello World"]
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:
Um alle verfügbaren Schriftarten zu erhalten, können wir den folgenden Befehl verwenden:
#!/usr/bin/wish
puts [font families]
Wenn wir den obigen Befehl ausführen, erhalten wir die folgende Ausgabe:
{Abadi MT Condensed Extra Bold} {Abadi MT Condensed Light} {Al Bayan} {Al Nile}
{Al Tarikh} {American Typewriter} {Andale Mono} Arial {Arial Black}
{Arial Hebrew} {Arial Narrow} {Arial Rounded MT Bold} {Arial Unicode MS}
Athelas Avenir {Avenir Next} {Avenir Next Condensed} Ayuthaya Baghdad {Bangla MN}
{Bangla Sangam MN} {Baoli SC} Baskerville {Baskerville Old Face} Batang {Bauhaus 93}
Beirut {Bell MT} {Bernard MT Condensed} BiauKai {Big Caslon} {Book Antiqua}
{Bookman Old Style} {Bookshelf Symbol 7} Braggadocio {Britannic Bold} {Brush Script MT}
Calibri {Calisto MT} Cambria {Cambria Math} Candara Century {Century Gothic}
{Century Schoolbook} Chalkboard {Chalkboard SE} Chalkduster {Charcoal CY} Charter
Cochin {Colonna MT} {Comic Sans MS} Consolas Constantia {Cooper Black} Copperplate
{Copperplate Gothic Bold} {Copperplate Gothic Light} Corbel {Corsiva Hebrew} Courier
{Courier New} {Curlz MT} Damascus {DecoType Naskh} Desdemona {Devanagari MT}
{Devanagari Sangam MN} Didot {DIN Alternate} {DIN Condensed} {Diwan Kufi} {Diwan Thuluth}
{Edwardian Script ITC} {Engravers MT} {Euphemia UCAS} Eurostile Farah Farisi
{Footlight MT Light} {Franklin Gothic Book} {Franklin Gothic Medium}
Futura Gabriola Garamond {GB18030 Bitmap} {Geeza Pro} Geneva {Geneva CY}
Georgia {Gill Sans} {Gill Sans MT} {Gloucester MT Extra Condensed}
{Goudy Old Style} {Gujarati MT} {Gujarati Sangam MN} Gulim GungSeo {Gurmukhi MN}
{Gurmukhi MT} {Gurmukhi Sangam MN} Haettenschweiler {Hannotate SC} {Hannotate TC}
{HanziPen SC} {HanziPen TC} Harrington HeadLineA Hei {Heiti SC} {Heiti TC}
Helvetica {Helvetica CY} {Helvetica Neue} Herculanum {Hiragino Kaku Gothic Pro}
{Hiragino Kaku Gothic ProN} {Hiragino Kaku Gothic Std} {Hiragino Kaku Gothic StdN}
{Hiragino Maru Gothic Pro} {Hiragino Maru Gothic ProN}
{Hiragino Mincho Pro} {Hiragino Mincho ProN} {Hiragino Sans GB}
{Hoefler Text} Impact {Imprint MT Shadow} InaiMathi {Iowan Old Style} Kai Kailasa
{Kaiti SC} {Kaiti TC} {Kannada MN} {Kannada Sangam MN} Kefa {Khmer MN} {Khmer Sangam MN}
{Kino MT} Kokonor Krungthep KufiStandardGK {Lantinghei SC} {Lantinghei TC} {Lao MN}
{Lao Sangam MN} {Libian SC} {LiHei Pro} {LiSong Pro} {Lucida Blackletter} {Lucida Bright}
{Lucida Calligraphy} {Lucida Console} {Lucida Fax} {Lucida Grande} {Lucida Handwriting}
{Lucida Sans} {Lucida Sans Typewriter} {Lucida Sans Unicode} {Malayalam MN}
{Malayalam Sangam MN} Marion {Marker Felt} Marlett {Matura MT Script Capitals}
Meiryo Menlo {Microsoft Sans Serif} Mishafi Mistral {Modern No. 20} Monaco {MS Gothic}
{MS Mincho} {MS PGothic} {MS PMincho} {MS Reference Sans Serif} {MS Reference Specialty}
Mshtakan {MT Extra} Muna {Myanmar MN} {Myanmar Sangam MN} Nadeem {Nanum Brush Script}
{Nanum Gothic} {Nanum Myeongjo} {Nanum Pen Script} {New Peninim MT} {News Gothic MT}
Noteworthy Onyx Optima {Oriya MN} {Oriya Sangam MN} Osaka Palatino {Palatino Linotype}
Papyrus PCMyungjo Perpetua {Perpetua Titling MT} PilGi {Plantagenet Cherokee}
Playbill PMingLiU {PT Mono} {PT Sans} {PT Sans Caption} {PT Sans Narrow} {PT Serif}
{PT Serif Caption} Raanana Rockwell {Rockwell Extra Bold} Sana Sathu {Savoye LET}
Seravek Silom SimSun {Sinhala MN} {Sinhala Sangam MN} Skia {Snell Roundhand} {Songti SC}
{Songti TC} Stencil STFangsong STHeiti STIXGeneral STIXIntegralsD STIXIntegralsSm
STIXIntegralsUp STIXIntegralsUpD STIXIntegralsUpSm STIXNonUnicode STIXSizeFiveSym
STIXSizeFourSym STIXSizeOneSym STIXSizeThreeSym STIXSizeTwoSym STIXVariants STKaiti
STSong Superclarendon Symbol Tahoma {Tamil MN} {Tamil Sangam MN} TeamViewer8 {Telugu MN}
{Telugu Sangam MN} Thonburi Times {Times New Roman} {Trebuchet MS} {Tw Cen MT} Verdana
Waseem {Wawati SC} {Wawati TC} Webdings {Weibei SC} {Weibei TC} {Wide Latin} Wingdings
{Wingdings 2} {Wingdings 3} {Xingkai SC} {Yuanti SC} YuGothic YuMincho {Yuppy SC}
{Yuppy TC} {Zapf Dingbats} Zapfino {Apple Braille} {Apple Chancery} {Apple Color Emoji}
{Apple LiGothic} {Apple LiSung} {Apple SD Gothic Neo} {Apple Symbols}
AppleGothic AppleMyungjo {Monotype Corsiva} {Monotype Sorts}
Das Bild-Widget wird zum Erstellen und Bearbeiten von Bildern verwendet. Die Syntax zum Erstellen eines Bildes lautet wie folgt:
image create type name options
In der obigen Syntax ist der Typ Foto oder Bitmap und der Name ist die Bildkennung.
Optionen
Die für die Bilderstellung verfügbaren Optionen sind in der folgenden Tabelle aufgeführt:
Sr.Nr. | Syntax & Beschreibung |
---|---|
1 | -file fileName Der Name des Bilddateinamens. |
2 | -height number Wird verwendet, um die Höhe für das Widget festzulegen. |
3 | -width number Legt die Breite für das Widget fest. |
4 | -data string Bild in Base 64-codierter Zeichenfolge. |
Ein einfaches Beispiel für ein Bild-Widget ist unten dargestellt.
#!/usr/bin/wish
image create photo imgobj -file "/Users/rajkumar/Desktop/F Drive/pictur/vb/Forests/
680049.png" -width 400 -height 400
pack [label .myLabel]
.myLabel configure -image imgobj
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:
Die verfügbaren Funktionen für das Bild sind unten in der folgenden Tabelle aufgeführt:
Sr.Nr. | Syntax & Beschreibung |
---|---|
1 | image delete imageName Löscht das Bild visuell aus dem Speicher und den zugehörigen Widgets. |
2 | image height imageName Gibt die Höhe für das Bild zurück. |
3 | image width imageName Gibt die Breite für das Bild zurück. |
4 | image type imageName Gibt den Typ für das Bild zurück. |
5 | image names Gibt die Liste der im Speicher befindlichen Bilder zurück. |
Ein einfaches Beispiel für die Verwendung der obigen Bild-Widget-Befehle ist unten dargestellt:
#!/usr/bin/wish
image create photo imgobj -file "/Users/rajkumar/images/680049.png"
-width 400 -height 400
pack [label .myLabel]
.myLabel configure -image imgobj
puts [image height imgobj]
puts [image width imgobj]
puts [image type imgobj]
puts [image names]
image delete imgobj
Das Bild wird visuell und aus dem Speicher gelöscht, sobald der Befehl "image delete imgobj" ausgeführt wird. In der Konsole sieht die Ausgabe wie folgt aus:
400
400
photo
imgobj ::tk::icons::information ::tk::icons::error ::tk::icons::
warning ::tk::icons::question
Ereignisse in ihrer einfachsten Form werden mit Hilfe von Befehlen behandelt. Ein einfaches Beispiel für die Ereignisbehandlung ist die Ereignisbehandlung mit der Schaltfläche.
#!/usr/bin/wish
proc myEvent { } {
puts "Event triggered"
}
pack [button .myButton1 -text "Button 1" -command myEvent]
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:
Ein einfaches Programm zum Anzeigen von Verzögerungstextanimationsereignissen ist unten dargestellt -
#!/usr/bin/wish
proc delay {} {
for {set j 0} {$j < 100000} {incr j} {}
}
label .myLabel -text "Hello................" -width 25
pack .myLabel
set str "Hello................"
for {set i [string length $str]} {$i > -2} {set i [expr $i-1]} { .myLabel configure -text [string range $str 0 $i]
update
delay
}
Wenn wir das Programm ausführen, erhalten wir die folgende Ausgabe auf animierte Weise:
Ereignis nach Verzögerung
Die Syntax für Ereignis nach Verzögerung ist unten dargestellt -
after milliseconds number command
Ein einfaches Programm, das nach einem Verzögerungsereignis angezeigt werden kann, ist unten dargestellt.
#!/usr/bin/wish
proc addText {} {
label .myLabel -text "Hello................" -width 25
pack .myLabel
}
after 1000 addText
Wenn wir das Programm ausführen, erhalten wir nach einer Sekunde die folgende Ausgabe:
Sie können ein Ereignis mit dem Befehl after cancel abbrechen (siehe unten).
#!/usr/bin/wish
proc addText {} {
label .myLabel -text "Hello................" -width 25
pack .myLabel
}
after 1000 addText
after cancel addText
Ereignisbindung
Die Syntax für die Ereignisbindung lautet wie folgt:
bind arguments
Beispiel für Tastaturereignisse
#!/usr/bin/wish
bind . {puts "Key Pressed: %K "}
Wenn wir das Programm ausführen und einen Buchstaben X drücken, erhalten wir die folgende Ausgabe:
Key Pressed: X
Beispiel für Mausereignisse
#!/usr/bin/wish
bind . {puts "Button %b Pressed : %x %y "}
Wenn wir das Programm ausführen und die linke Maustaste drücken, erhalten wir eine Ausgabe ähnlich der folgenden:
Button 1 Pressed : 89 90
Verknüpfen von Ereignissen mit Schaltflächenbeispiel
#!/usr/bin/wish
proc myEvent { } {
puts "Event triggered"
}
pack [button .myButton1 -text "Button 1" -command myEvent]
bind . ".myButton1 invoke"
Wenn wir das Programm ausführen und die Eingabetaste drücken, erhalten wir die folgende Ausgabe:
Event triggered
Der Fenstermanager wird verwendet, um das Fenster der obersten Ebene zu verwalten. Es hilft bei der Steuerung der Größe, Position und anderer Attribute des Fensters. In Tk ,. wird verwendet, um auf das Hauptfenster zu verweisen. Die Syntax für den Fensterbefehl ist unten dargestellt -
wm option window arguments
Die Liste der für den Befehl Tk wm verfügbaren Optionen wird in der folgenden Tabelle angezeigt:
Sr.Nr. | Syntax & Beschreibung |
---|---|
1 | aspect windowName a b c d Versucht, das Verhältnis von Breite / Höhe zwischen a / b und c / d beizubehalten. |
2 | geometry windowName geometryParams Verwenden Sie diese Option, um die Geometrie für das Fenster festzulegen. |
3 | grid windowName w h dx dy Legt die Rastergröße fest. |
4 | group windowName leaderName LeaderName gibt den Anführer einer Gruppe verwandter Fenster an. |
5 | deiconify windowName Bringt den Bildschirm auf Normal, wenn er minimiert ist. |
6 | iconify windowName Minimiert das Fenster. |
7 | state windowName Gibt den aktuellen Status des Fensters zurück. |
8 | withdraw windowName Hebt die Zuordnung des Fensters auf und entfernt seine Details im Speicher. |
9 | iconbitmap windowName image Legt die Symbol-Bitmap fest oder gibt sie zurück. |
10 | iconPhoto windowName image Legt das Symbolfoto fest oder gibt es zurück. |
11 | command windowName commandString Zeichnet den Startbefehl in der Eigenschaft WM_COMMAND auf. |
12 | protocol windowName arguments Registrieren Sie einen Befehl zur Behandlung des Protokollanforderungsnamens, der WM_DELETE_WINDOW sein kann. WM_SAVE_YOURSELF, WM_TAKE_FOCUS. ZB: Wm-Protokoll. WM_DELETE_WINDOW Beenden. |
13 | minsize windowName size Bestimmt die minimale Fenstergröße. |
14 | maxsize windowName size Bestimmt die maximale Fenstergröße. |
15 | title windowName titleText Bestimmt den Titel für das Fenster. |
16 | attributes subOptions Es stehen viele Attribute wie Alpha, Vollbild usw. zur Verfügung. |
Einige der oben genannten Befehle werden im folgenden Beispiel verwendet:
#!/usr/bin/wish
wm maxsize . 800 800
wm minsize . 300 300
wm title . "Hello"
wm attributes . -alpha ".90"
wm geometry . 300x200+100+100
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:
Wie Sie sehen können, ist Alpha eines der verfügbaren Attribute. Die Liste der häufig verwendeten Unterbefehle ist unten aufgeführt -
Sr.Nr. | Syntax & Beschreibung |
---|---|
1 | -alpha number Legt das Alpha für Fenster fest. |
2 | -fullscreen number Die Nummer kann 0 für normalen Bildschirm oder 1 für Vollbild sein. |
3 | -topmost number Legt fest oder gibt zurück, ob das Fenster am obersten ist. Der Wert kann 0 oder 1 sein. |
Fenster erstellen
Wir können den Befehl toplevel verwenden, um ein Fenster zu erstellen. Ein Beispiel ist unten dargestellt.
#!/usr/bin/wish
toplevel .t
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:
Fenster zerstören
Wir können den Befehl destroy verwenden, um das Fenster zu zerstören. Ein Beispiel ist unten dargestellt.
#!/usr/bin/wish
destroy .t
Der obige Befehl zerstört das benannte Fenster .t.
Der Geometriemanager wird zum Verwalten der Geometrie des Fensters und anderer Rahmen verwendet. Wir können es verwenden, um die Position und Größe des Fensters und der Rahmen zu handhaben. Zu diesem Zweck werden die Layout-Widgets verwendet.
Positionierung und Dimensionierung
Die Syntax für das Positionierungs- und Größenfenster wird unten gezeigt -
wm geometry . wxh+/-x+/-y
Hier bezieht sich w auf die Breite und h auf die Höhe. Es folgt ein '+' oder '-' Zeichen mit der Nummer, die sich auf die x-Position auf dem Bildschirm bezieht. In ähnlicher Weise bezieht sich das folgende '+' oder '-' Zeichen mit der Nummer auf die y-Position auf dem Bildschirm
Ein einfaches Beispiel für die obige Anweisung ist unten dargestellt.
#!/usr/bin/wish
wm geometry . 300x200+100+100
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:
Gittergeometrie
Die Syntax für die Gittergeometrie ist unten dargestellt -
grid gridName -column number -row number -columnspan number -rowspan number
Der Spalten-, Zeilen-, Spalten- oder Zeilenbereich hilft bei der Bereitstellung der Rastergeometrie.
Ein einfaches Beispiel für die obige Aussage ist unten gezeigt -
#!/usr/bin/wish
frame .myFrame1 -background red -height 100 -width 100
frame .myFrame2 -background blue -height 100 -width 50
grid .myFrame1 -columnspan 10 -rowspan 10 -sticky w
grid .myFrame2 -column 10 -row 2
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe: