Tcl/Tk

Buch: Einführung in Tcl/Tk

Das Buch "Einführung in Tcl/Tk" wendet sich an Anfänger, die diese interessante Programmiersprache erlernen möchten. Es umfasst alle wichtigen Befehle und erklärt mit vielen Beispielen deren Funktionsweise. Bei Bedarf kann man im Internet auf den Seiten

jeden Befehl vertiefen.

Das Buch darf für nicht-kommerzielle Zwecke kostenlos als pdf-Datei heruntergeladen werden. Die im Buch erwähnten Beispiele können Sie ebenfalls herunterladen, um sich das Abschreiben zu sparen. Sollten Sie trotz sorgfältiger Prüfung Fehler finden, bitte ich Sie um einen entsprechenden Hinweis. Auch Verbesserungsvorschläge sind herzlich willkommen.

Kommentare zum Buch

Zunächst einmal muss ich dir sagen, dass ich voll begeistert bin von deinem Buch. Sehr umfangreich und vor allem in deutsch!

Vielen Dank für ihre ausführliche Dokumentation von TCL/TK und ihrer Webseite über diese Programmiersprache. Ich komme von Python und bin über den einfachen und logischen Aufbau von TCL begeistert. (...) Vielen Dank für ihre wertvolle Hilfe für Neulinge in TCL.

Ein Superbuch, vielen Dank für die Bereitstellung!!! Sehr gelungene Darstellung der Syntax und der Beispiele.

Vielen Dank für Ihr sehr nützliches und gutes Buch. Ich nutze es um mich in Tcl/Tk einzuarbeiten.

Das Buch gefällt mir gut. Schaue immer wieder rein.

Großes Lob für das Buch. Es hat mir das TK endlich verständlicher gemacht. Auch TCL Befehle/Funktionen, welche mir nicht ganz so geläufig sind, sind sehr gut erklärt und durch Beispiele unterstützt.

Es freut mich sehr und auch meine Kollegen, dass es endlich eine Doku/Buch gibt, welches in verständlicher Sprache und mit guten Beispielen einem die Möglichkeiten von Tcl/Tk näher bringt. Ich werde das Werk auf jeden Fall lobend weiterempfehlen.

Danke für die super Arbeit. War schon länger auf der Suche nach einem deutschen TCL Buch. Was mir auch gut gefällt, sind die unzähligen Beispiele.

Vielen Dank für die tcl-Doku (pdf), die Sie im Internet zur Verfügung gestellt haben! Ich habe lange gesucht und nichts besseres (vor allem in deutscher Sprache!) im Internet gefunden.

Vielen Dank für Ihr Buch "Einführung in Tcl/Tk"! Ich arbeite privat mit Linux und programmiere mir ab und zu kleinere Programme mit Tcl/Tk, wenn entsprechende Software unter Linux nicht verfügbar ist oder mir vorhandene Programme nicht zusagen. Als Literatur hatte ich bisher nur das Buch von John K. Ousterhout, das ich sehr gut finde, aber auf einem alten Stand von Tcl/Tk basiert (1995). Daher war ich sehr froh, dass ich in Ihrem Buch Erläuterungen zur aktuellen Version von Tcl/Tk finde (mit den neuen Widgets wie z.B. Comboboxen usw.). Ihr Buch finde ich sehr gut! Es ist gut verständlich, übersichtlich strukturiert und mit sehr guten Programmbeispielen und aussagefähigen Screenshots versehen! Ich kann nicht gut programmieren und mache das nur so privat zum Spaß. Ihr Buch wird mir bei zukünftigen "Softwareprojekten" sicherlich eine gute Hilfe sein! Herzlichen Dank!

(...) möchte ich mich bedanken für Ihr pdf-Dokument (Einführung in Tcl/TK), welches mir schon oft geholfen hat.

Das Buch gefällt mir sehr gut, bin immer wieder auf die Neuerungen alle paar Monate gespannt.

Vielen Dank für Ihr gutes, aufschlußreiches Buch, welches ich regelmäßig benutze und update.

Thank you so much for your Tcl Buch. Please do it more and more. Excuse me (being able only to read German texts) for not writing in Deutsch to you.

I should inform you that your book is remarkable among other Tcl/Tk guides and it is the book's format that makes it so remarkable. So great lot of examples! And all go one after another, enhancing complexity and contents.

Erstmal muss ich mich den auf Ihrer Infoseite wiedergegebenen begeisterten Kommentatoren anschließen. Es ist immer noch eine Seltenheit, dass man eine in englischer Sprache initiierte Programmiersprache/Software ausführlich auf deutsch erklärt bekommt. Dafür vielen Dank.

Versionen / Änderungen

VersionÄnderungen
2023-12-02 Neue Kapitel:
Kapitel "9.6 Trace"
Kapitel "44.6 Mausklicks eine Zeit lang ignorieren"
Kapitel "51.5 Mit der Maus zeichnen"
2022-07-26 Wegen geschäftspolitischer Änderungen seitens ActiveState wurden die Verweise auf ActiveTcl entfernt.
2022-01-02 Neue Kapitel:
Kapitel "11.2 Duplikate entfernen ohne die Reihenfolge zu ändern"
Kapitel "16. Pool"
Kapitel "17. Tree (Baum)"
Kapitel "18. Graph (Gerichteter Graph)"
Kapitel "26. Tcl mit C/C++ kombinieren"
Kapitel "28. Formel-Eingabe durch den Anwender"
Kapitel "41.18.1. Text-Element durchsuchen"
Kapitel "41.19 Kalender"
Kapitel "46. Tooltip anzeigen"

Ergänzungen in folgenden Kapiteln oder Beispielen:
Kapitel "7.1.1. Rechnen mit Zahlen"
Kapitel "11. Listen, Beispiele 556 und 557"
Kapitel "12.1. Text, Beispiel 561"
Kapitel "57. Programm weitergeben"
2020-10-12 Neue Kapitel:
Kapitel "16.1 Matrix kopieren"
Kapitel "37.1. Einheitliche Hintergrundfarbe des Dialogs und der Elemente"
Kapitel "45.7 Bildschirmfoto erstellen"

Ergänzungen in folgenden Kapiteln oder Beispielen:
Kapitel "7.1.1. Rechnen mit Zahlen", Funktionen asin, acos, atan, Beispiel 532
Kapitel "12.1. Text, Beispiele 522 bis 524"
Kapitel "14.1. Dictionary", Beispiel 531
Kapitel "36.17. Treeview", Beispiele 447, 529, 530, 533, 534, 535 und 538
Kapitel "39.1. Binding für ein Element", KP_Enter
Kapitel "40. Mauszeiger, Beispiele 525 und 526"
2019-12-15 Neue Kapitel:
Kapitel "3. Beispiel-Programm"
Kapitel "6.3.4. Prüfen, ob eine Variable existiert"
Kapitel "15. Stack (Stapel)"
Kapitel "44.3. Tabelle sortieren"
Kapitel "50. Client-Server-Kommunikation"

Ergänzungen in folgenden Kapiteln oder Beispielen:
Kapitel "11.1. Listen, Beispiele 515 und 516"
Kapitel "13.2. Array an Prozedur übergeben"
Kapitel "15.2. Ordner durchsuchen mit glob, Beispiele 139 und 438"
Kapitel "16. Matrix, Beispiele 433 und 434"
Kapitel "16.1. Matrix mittels Liste sortieren"
Kapitel "36.17. Treeview, Beispiele 263 und 514"
Kapitel "44. TkTable, Beispiel 133"
Kapitel "45.5. Objekt bewegen, Beispiel 512"
2019-02-03 Neue Kapitel:
Kapitel "10.4. Vergleich von Listen mit ::struct::set"
Kapitel "28.2. Fenstergröße abfragen"
Kapitel "34.9. Menubutton"
Kapitel "35.6. Prüfen, ob ein Element existiert"
Kapitel "35.7. Größe und Position eines Elements abfragen"
Kapitel "35.8. Element löschen"
Kapitel "43.6. Farbe eines Bildpunkts ermitteln"
Kapitel "46.3. Farbe und Schrift der Elemente festlegen"

Ergänzungen in folgenden Kapiteln:
Kapitel "6.2.1. Formatierung, Format %j"
Kapitel "14.1. Dateien und Ordner, Befehl [info nameofexecutable]"
Kapitel "14.1. Dateien und Ordner, Beispiel 135"
Kapitel "25. Objektorientierte Programmierung, Beispiel 342 und 477"
Kapitel "31.1. Scroll-Leisten mit pack, Beispiel 463"
Kapitel "34.2. Label, Option -anchor"
Kapitel "34.7. Checkbutton, Option -command, Beispiel 464"
Kapitel "34.8. Radiobutton, Option -command, Beispiel 465"
Kapitel "34.11. Listbox, Beispiele 478-480"
Kapitel "35.9. Element deaktivieren und aktivieren, Option -state readonly"
Kapitel "41.1. Toplevel-Dialog, Beispiel 476"
2018-08-23 Ergänzungen in folgendem Kapitel:
Kapitel "47.1. Zeichenfläche"
2018-08-18 Ergänzungen in folgendem Kapitel:
Kapitel "8.5. Uplevel"
2018-08-04 Ergänzungen in folgendem Kapitel:
Kapitel "6.1.1. Rechnen mit Zahlen"
2018-06-17 Ergänzungen in folgenden Kapiteln:
Kapitel "41.1. Binding für ein Element"
Kapitel "46. TkTable"
Kapitel "48. Gnuplot"
2018-03-27 Neues Layout
Ergänzungen in folgenden Kapiteln:
Kapitel "24. Datenbank sqlite3"
Kapitel "38.4. Entry"
Kapitel "38.17. Text"
Kapitel "46. TkTable"
2017-11-11 Ergänzungen in folgenden Kapiteln:
Kapitel "128. Treeview"
Kapitel "154. Layout"
2017-08-16 Neue Kapitel:
Kapitel "82. Nur für Windows: gleichzeitige Nutzung von GUI und Konsole"

Ergänzungen in folgenden Kapiteln:
Kapitel "128. Treeview"
Kapitel "134. Canvas (Zeichenfläche)"
2017-06-04 Neue Kapitel:
Kapitel "17. Fehlermeldungen verstehen"

Ergänzungen in folgenden Kapiteln:
Kapitel "21. Rechnen"
Kapitel "60. Dateien und Ordner"
Kapitel "109. Label"
2017-02-04 Neue Kapitel:
Kapitel "65. csv-Dateien öffnen bzw. erstellen"
Kapitel "67. Matrix"
2016-12-27 Ergänzungen in folgenden Kapiteln:
Kapitel "42. Listen"
Kapitel "64. Konfigurationsdatei speichern und einlesen"
Kapitel "100. tk_getOpenFile"
Kapitel "101. tk_getSaveFile"
Kapitel "114. Labelframe"
Kapitel "138. Eigenschaft eines Elements nachträglich ändern"
Kapitel "150. Layout"
2016-10-24 Neue Kapitel:
Kapitel "143. Virtuelle Ereignisse"

Ergänzungen in folgenden Kapiteln:
Kapitel "118. Listbox"
2016-09-14 Ergänzungen in folgenden Kapiteln:
Kapitel "5. Hilfreiche Internetseiten zu Tcl/Tk"
Kapitel "48. Strings (Text)"
Kapitel "90. Elemente ausblenden"
Kapitel "91. Elemente einblenden"
Kapitel "119. Combobox"
2016-08-10 Neue Kapitel:
Kapitel "54. Mustererkennung in Strings bzw. Text ersetzen in Strings"

Ergänzungen in folgenden Kapiteln:
Kapitel "122. Notebook"
Kapitel "131. Zeichenflächen ,die größer als das Fenster sind"
2016-06-15 Neue Kapitel:
Kapitel "36. Upvar und Uplevel in Prozeduren"
Kapitel "102. Variablen und Befehle der Elemente sind global"
Kapitel "130. Zeichenflächen ,die größer als das Fenster sind"

Ergänzungen in folgenden Kapiteln:
Kapitel "37. Programmablauf (Kurzform)"
Kapitel "55. Ein Array an eine Prozedur übergeben"
Kapitel "111. Entry"
Kapitel "117. Listbox"
Kapitel "124. Text"
Kapitel "139. Maus- und Tastaturereignisse (Bindings)"
2016-03-13 Neue Kapitel:
Kapitel "124. Popup-Menü (Kontextmenü)"
Kapitel "125. Optionen-Menü"
Kapitel "128. Canvas als Hilfsmittel, viele Elemente in einem Fenster darzustellen"

Ergänzungen in folgenden Kapiteln:
Kapitel "23. Zufallszahlen"
Kapitel "41. Listen"
Kapitel "59. Ordner durchsuchen mit fileutil::find"
Kapitel "74. Datenbank sqlite3"
Kapitel "80. Der Geometrie-Manager pack"
Kapitel "108 Button"
Kapitel "109. Entry"
Kapitel "120. Panedwindow"

Korrektur in folgendem Kapitel:
Kapitel "135. Maus- und Tastaturereignisse (Bindings)"
2015-11-15 Teilweise neue Reihenfolge der Kapitel auf Grund der Erfahrungen aus einer Programmier-AG.

Neue Kapitel:
Kapitel "16. Variablenname mit Hilfe einer anderen Variablen bilden"
Kapitel "21. Zahlen mit führender Null"
Kapitel "37. Programmablauf im Detail (Regeln des Tcl-Interpreters)"
Kapitel "43. Elemente aus einer Liste extrahieren mit foreach"
Kapitel "44. Alle Kombinationen aus den Elementen einer Liste erzeugen (Permutation)"
Kapitel "52. Zahl als String oder als Zahl behandeln"

Ergänzungen in folgenden Kapitel:
Kapitel "41. Listen"
Kapitel "63. Umgang mit Binär-Dateien"
2015-09-26 Neue Kapitel:
Kapitel "43. Listen expandieren mit {*}"
Kapitel "55. Ordner durchsuchen mit fileutil::find"
Kapitel "58. Konfigurationsdatei speichern und einlesen"
Kapitel "66. Befehle aus einer Textdatei ausführen"

Ergänzungen in folgenden Kapitel:
Kapitel "12. Ausgabe von Text und Zahlen"
Kapitel "49. Arrays"
Kapitel "50. Ein Array an eine Prozedur übergeben"
Kapitel "54. Ordner durchsuchen mit glob"
Kapitel "64. Andere Programme starten"
Kapitel "65. Befehle dynamisch erzeugen"
Kapitel "95. Allgemeine Optionen der Elemente"
2015-09-07 Ergänzungen in folgenden Kapiteln:
Kapitel "61. Andere Programme starten"
Kapitel "97. Bilder verwenden"
2015-08-28 Neue Kapitel:
Kapitel "61. Andere Programme starten"
Kapitel "112. Text"

Ergänzungen in folgenden Kapiteln:
Kapitel "27. Datum und Uhrzeit"
Kapitel "111. Treeview"
2015-07-05 Neue Kapitel:
Kapitel "33. Prozeduren in separate Datei auslagern"
Kapitel "64. Objektorientierte Programmierung"

Ergänzungen in folgenden Kapiteln:
Kapitel "69. Der Geometrie-Manager pack"
2015-05-15 Neue Kapitel:
Kapitel "50. Unterschied zwischen Array und Dictionary"
Kapitel "110. TkTable"

Ergänzungen in folgenden Kapiteln:
Kapitel "28. Rechnen mit Datum und Uhrzeit"

Korrekturen:
Kapital "39. Listen", Befehl lreplace.
2015-03-05 Neue Kapitel:
Kapitel "17. Programm mit Argumenten (Parametern) starten"
Kapitel "18. Dezimale, hexadezimale, binäre und ASCII-Darstellung von Zahlen"
Kapitel "54. Umgang mit Binär-Dateien"

Ergänzungen in folgenden Kapiteln:
Kapitel "108. Menü"
Kapitel "128. Mehrsprachige GUI"
2015-02-10 Ergänzungen in folgenden Kapiteln:
Kapitel "9. Tcl/Tk-Programme unter Windows ausführen"
Kapitel "10. Tcl/Tk-Programme unter Linux ausführen"
Kapitel "37. Listen"
Kapitel "40. Strings"
Kapitel "85. Frame"
Kapitel "106. Canvas (Zeichenfläche)"
2014-12-21 Neue Kapitel:
Kapitel "54. Plattformübergreifende Programme"
Kapitel "106. Canvas (Zeichenfläche)"
Kapitel "107. Diagramme mit Canvas und Gnuplot"
Kapitel "108. Animationen erstellen"

Ergänzungen in folgenden Kapiteln:
Kapitel "21. Rechnen"
Kapitel "25. Datum und Uhrzeit"
Kapitel "32. Lokale und globale Variablen"
Kapitel "45. Arrays"
Kapitel "58. Datenbank sqlite3"
Kapitel "99. Combobox"
Kapitel "105. Menü"
Kapitel "123. Layout"
2014-10-26Korrektur in Kapitel "121. Mehrsprachige GUI"
2014-10-05Erstveröffentlichung