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: