Tcl/Tk, 3rd Edition

A Developer's Guide

Tcl/Tk, 3rd Edition,Clif Flynt,ISBN9780123847171


Morgan Kaufmann




235 X 191

Comprehensive tutorial and reference guide to becoming a more effective programmer.

Print Book + eBook

USD 83.34
USD 138.90

Buy both together and save 40%

Print Book


In Stock

Estimated Delivery Time
USD 69.95

eBook Overview

PDF format

VST (VitalSource Bookshelf) format

EPUB format

USD 68.95
Add to Cart

Key Features

  • Includes the latest features of Tcl/Tk 8.6
  • Covers Tcl development tools, popular extensions, and packages to allow developers to solve real-world problems with Tcl/Tk immediately
  • Provides straightforward explanations for beginners and offers tips, style guidelines, and debugging techniques for advanced users
  • Companion website includes Tcl/Tk tutorials, applications, distributions, and more tools


Newly updated with over 150 pages of material on the latest Tcl extensions, Tcl/Tk: A Developer’s Guide is a unique practical tutorial for professional programmers and beginners alike. Starting with a clear picture of the basics, Tcl/Tk covers the variety of tools in this "Swiss army knife" of programming languages, giving you the ability to enhance your programs, extend your application's capabilities, and become a more effective programmer.

This updated edition covers all of the new features of version 8.6, including object-oriented programming and the creation of megawidgets, existing data structure implementations, themed widgets and virtual events. Extensive code snippets and online tutorials in various languages will give you a firm grasp on how to use the Tcl/Tk libraries and interpreters and, most importantly, on what constitutes an effective strategy for using Tcl/Tk.


Applications developers, programmers, software testers, systems software engineers, software architects, and design engineers

Clif Flynt

Clif Flynt is a professional programmer and has been a Tcl advocate since 1994. He has developed Tcl applications for the e-commerce, factory control, computer-based education, network analysis, games, firewall configuration, systems administration, and more. He has taught Tcl/Tk seminars in colleges and corporations around the world and writes regularly on Tcl/Tk for the developer community.

Affiliations and Expertise

CEO, Noumena Corporation, Dexter, Michigan

Tcl/Tk, 3rd Edition

Tcl/Tk Features.
1.1 Tcl Overview.
1.1.1 The Standard Tcl Distribution
1.2 Tcl as a Glue Language
1.2.2 Tcl Scripts Compared with Unix Shell Scripts
1.2.3 Tcl Scripts Compared with MS-DOS .bat Files
1.3 Tcl as a General-Purpose Interpreter
1.3.1 Tcl/Tk Compared with Visual Basic
1.3.2 Tcl/Tk Compared with Perl
1.3.3 Tcl/Tk Compared with Python
1.3.4 Tcl/Tk Compared with Java
1.4 Tcl as an Extensible Interpreter
1.5 Tcl as an Embeddable Interpreter
1.6 Tcl as a Rapid Development Tool
1.7 GUI-Based Programming
1.8 Shipping Products
1.9 Bottom Line
1.10 Problems

The Mechanics of Using the Tcl and Tk Interpreters.
2.1 The tclsh and wish Interpreters
2.1.1 Starting the tclsh and wish Interpreters
2.1.2 Starting tclsh or wish under Unix
2.1.3 Starting tclsh or wish under Microsoft Windows
2.1.4 Starting tclsh or wish on the Mac
2.1.5 Exiting tclsh or wish
2.2 Using tclsh/wish Interactively
2.2.1 Tclsh as a Command Shell
2.2.2 Tk Console (tkcon) -- An Alternative Interactive tclsh/wish Shell
2.2.3 Evaluating Scripts Interactively
2.3 Evaluating Tcl Script Files
2.3.1 The Tcl Script File
2.3.2 Evaluating Tcl Script Files
2.3.3 Evaluating a Tcl Script File under Unix
2.3.4 Evaluating a Tcl Script File under Microsoft Windows
2.3.5 Evaluating a Tcl Script on the Mac
2.4 Bottom Line
2.5 Problems

Introduction to the Tcl Language.
3.1 Overview of the Basics
3.1.1 Syntax
3.1.2 Grouping Words
3.1.4 Data Representation
3.1.5 Command Results
3.1.6 Errors
3.2 Command Evaluation and Substitutions
3.2.1 Substitution
3.2.2 Controlling Substitutions with Quotes, Curly Braces, and Backslash
3.2.3 Steps in Command Evaluation
3.3 Data Types
3.3.1 Assigning Values to Variables
3.3.2 Strings
3.3.3 String Processing Commands
3.3.4 Lists
3.3.5 List Processing Commands
3.3.6 Associative Arrays
3.3.7 Associative Array Commands
3.3.8 Binary Data
3.3.9 Handles
3.4 Arithmetic and Boolean operations
3.4.1 Math Operations
3.4.2 Conditionals
3.4.3 Looping
3.5 Modularization
3.5.1 Procedures
3.6 Bottom Line
3.7 Problems

File System, Disk I/O and Sockets.
4.0.1 Navigating the File System
4.0.2 Properties of file system items
4.0.3 Removing files
4.1.2 Input
4.1.3 Creating a channel
4.1.4 Closing Channels
4.1 Input/Output in Tcl
4.1.1 Output
4.2 Sockets
4.2.1 Using a client socket
4.2.2 Controlling Data Flow
4.2.3 Server Sockets
4.3 Bottom Line
4.4 Problems

Using Strings and Lists.
5.1 Converting a String into a List
5.2 Examining the List with a for Loop
5.3 Using the foreach Command
5.4 Using the string match instead of string first
5.5 Using lsearch
5.6 The regexp Command
5.6.1 Regular Expression Matching Rules
5.6.2 Advanced and Extended Regular Expression Rules
5.7 Creating a Procedure
5.8 Making a Script
5.9 Speed Considerations
5.10 Bottom Line
5.11 Problems

Building complex data structures with lists and arrays.
6.1 Using the Tcl List
6.2 Using the Associative Array
6.3 Exception handling and Introspection
6.4 Trees in Tcl
6.5 Tree Library Implementation
6.5.5 Generating unique names
6.6 Using the Tree Library
6.7 Speed Considerations
6.8 Bottom Line
6.9 Problems

Procedure Techniques.
7.1 Arguments to Procedures
7.1.1 Variable Number of Arguments to a Procedure
7.1.2 Default Values for Procedure Arguments
7.2 Renaming or Deleting Commands
7.3 Getting Information about Procedures
7.4 Substitution and Evaluation of Strings
7.4.1 Performing Variable Substitution on a String
7.4.2 Evaluating a String as a Tcl Command
7.5 Working with Global and Local Scopes
7.5.1 Global and Local Scope
7.6.1 An Object Example
7.6.2 Creating a Tree Object
7.6.3 Defining the Object's Method
7.6 Making a Tcl Object
7.7 Bottom Line
7.8 Problems

Namespaces and Pack.
8.1 Namespaces and Scoping Rules
8.1.1 Namespace Scope
8.1.2 Namespace Naming Rules
8.1.3 Accessing Namespace Entities
8.1.4 Why Use Namespaces?
8.1.5 The namespace and variable Commands
8.1.6 Creating and Populating a Namespace
8.1.7 Namespace Nesting
8.2 Packages
8.2.1 How Packages Work
8.2.2 Internal Details: Files and Variables Used with Packages
8.2.3 Package Commands
8.2.4 Version Numbers
8.2.5 Package Cookbook
8.3 A Tree Object Package with Namespaces
8.3.1 Adding Namespace and Package to tree.tcl
8.3.2 The Tree Object in a Namespace
8.3.3 Procedures and Namespace Scopes
8.4 Bottom Line
8.5 Problems

Introduction to Tk Graphics.
9.1 Creating a Widget
9.2 Conventions
9.2.1 Widget Naming Conventions
9.2.2 Color Naming Conventions
9.2.3 Dimension Conventions
9.3 Common
9.4 Determining and Setting Options
9.5 The Basic Widgets
9.6 Introducing Widgets: label, button, and entry
9.7 Widget Layout: frame, place, pack, and grid
9.7.1 The frame Widget
9.7.2 The place Layout Manager
9.7.3 The pack Layout Manager
9.7.4 The grid Layout Manager
9.7.5 Working Together
9.8 Selection Widgets: radiobutton, checkbutton, menu, and listbox
9.8.1 radiobutton and checkbutton
9.8.2 Pull-down Menus: menu, menubutton and menubars Menubars
9.8.3 Selection widgets: listbox
9.9 Scrollbar
9.9.1 The Basic scrollbar
9.9.2 scrollbar Details
9.9.3 Intercepting scrollbar Commands
9.13.1 Canceling the Future
9.10 The scale Widget
9.11 New Windows
9.12 Interacting with the Event Loop
9.13 Scheduling the Future: after
9.14 Bottom Line
9.15 Problems

Using the canvas widget.
10.1 Overview of the canvas Widget
10.1.1 Identifiers and Tags
10.1.2 Coordinates
10.1.3 Binding
10.2 Creating a canvas
10.3 Creating Displayable Canvas Items
10.3.1 An Exam
10.4 More Canvas Widget Subcommands
10.4.1 Modifying an Item
10.4.2 Changing the Display Coordinates of an Item
10.4.3 Moving an Item
10.4.4 Finding Items, Raising and Lowering Items
10.4.5 Fonts and Text items
10.4.6 Using a Canvas Larger than the View
10.5 The bind and focus Commands
10.5.1 The bind Command
10.5.2 The Canvas Widget bind Subcommand
10.5.3 Focus
10.6 Creating a Widget
10.7 A Help-Balloon: Interacting with the window manager
10.8 The image Object
10.8.1 The image Command
10.8.2 Bitmap Images
10.8.3 Photo Images
10.8.4 Revisiting the delayButton Widget
10.9 Bottom Line
10.10 Problems

The text widget and htmllib.
11.1 Overview of the text Widget
11.1.1 Text Location in the text Widget
11.1.2 Tag Overview
11.1.3 Mark Overview
11.1.4 Image Overview
11.1.5 Window Overview
11.2 Creating a text Widget
11.3 Text Widget Subcommands
11.3.1 Inserting and deleting text
11.3.2 Searching Text
11.3.3 The mark Subcommands
11.3.4 Tags Finding Tags
11.3.5 Inserting Images and Widgets into a text Widget
11.4 HTML Display Package
11.4.1 Displaying HTML Text
11.4.2 Using html_library Callbacks: Loading Images and Hypertext Links
11.4.3 Interactive help with the text widget and htmllib
11.5 Bottom Line
11.6 Problems

Tk Megawidgets.
12.1 Standard Dialog Widgets
12.2 Megawidget Building Philosophy
12.2.1 Display in Application Window or Main Display?
12.2.2 Modal versus Modeless Operation
12.2.3 Widget Access Conventions
12.2.4 Widget Frames
12.2.5 Configuration
12.2.6 Access to Subwidgets
12.2.7 Following Tk Conventions
12.3 Functionality that makes Megawidgets possible
12.3.1 The rename command
12.3.2 The option command
12.3.3 The -class option
12.4 Building a Megawidget
12.5 A Scrolling Listbox Megawidget
12.5.1 scrolledListBox Description
12.5.2 Using the scrolledLB
12.5.3 Implementing the Scrollable ListBox
12.5.4 The scrolledLB Code
12.6 Namespaces and Tk widgets
12.7 Incorporating a Megawidget into a Larger Megawidget
12.8 Making a Modal Megawidget: The grab and tkwait Commands
12.8.1 The grab command
12.8.2 The tkwait command
12.8.3 The modal widget code
12.9 Automating megawidget Construction
12.9.1 Building megawidgets from a skeleton
12.9.2 Building megawidgets from a configuration file
12.9.3 Another technique for building megawidgets
12.10 Bottom Line
12.11 Problems

Writing a Tcl Extension.
13.1 Functional View of a Tcl Extension
13.1.1 Overview
13.1.2 Initialize any persistent data structures
13.1.3 Register new commands with the Interpreter
13.1.4 Accept data from Tcl Interpreter
13.1.5 Returning Results
13.1.6 Returning Status to the Script
13.1.7 Dealing with Persistent Data
13.2 Building an Extension
13.2.1 Structural Overview of an Extension
13.2.2 Naming Conventions
13.3 An Example
13.3.1 demoInt.h
13.3.2 demoInit.c
13.3.3 demoCmd.c
13.3.4 demoDemo.c
13.4 Complex Data
13.5 Bottom Line
13.6 Exercises

Extensions and Package.
14.1 [incr Tcl]
14.2 Expect
14.3 TclX
14.4 Sybtcl and Oratcl
14.5 MySqlTcl
14.6 VSdb Package
14.7 BWidgets
14.8 BLT
14.9 Graphics Extensions: Img
14.10 Bottom Line

Programming Tools.
15.1 Code Formatter
15.1.1 frink
15.2 Code Checkers
15.2.1 tclCheck
15.2.2 ICEM ice_lint
15.2.3 procheck
15.3 Debuggers
15.3.1 Debug
15.3.2 Graphic Debuggers
15.4 GUI Generators
15.4.1 SpecTcl
15.4.2 Visual GYPSY
15.5 Tcl Compilers
15.5.1 ICEM Tcl Compiler
15.5.2 TclPro procomp
15.6 Packaging Tools
15.6.1 TclPro prowrap
15.6.2 FreeWrap
15.6.3 Starkit and Starpack
15.7 Tcl Extension Generators
15.7.1 SWIG
15.7.2 CriTcl
15.8 Integrated Development Environments
15.8.1 ASED
15.8.2 Komodo
15.8.3 MyrmecoX
15.9 Bottom Line

Tips and Techniques.
16.1 Debugging Techniques
16.2 Tcl as a Glue Language: The exec Command
16.3 Common Mistakes
16.4 Coding Tips and Techniques
16.5 Bottom Line

Quotes and reviews

"The best computer programmers are astonishingly more productive than average. One reason is that they use good tools, and they use them well. Clif Flynt's Tcl/Tk: A Developer's Guide, Second Edition helps you improve your effectiveness as a developer in both of these ways. Tcl is a software language with a great return on investment-it achieves portable, powerful, economical results with great economy. Just a few lines of Tcl are enough to create applications that are both interesting and useful. Clif draws on his deep experience as a front-line developer to help you get the most out of Tcl. He writes clearly, and has organized his book with instructive examples that teach the essentials of Tcl. He covers the right material too: Tcl/Tk packs in not just such long-standing Tcl strengths such as its easy networking and graphical user interface, but also the latest breakthroughs with internationalization, widget upgrades, and StarPacks. Want to take your programming to the next level? Get Tcl/Tk: A Developer's Guide, Second Edition."

-Cameron Laird is vice president of Phaseit, Inc. (, where he specializes in Rapid Enterprise Integration with Tcl and related tools. His frequent publications on information technology include the popular "Regular Expressions" column (


Cyber Week Pre-Sale | Use Code CYBOOK15

Shop with Confidence

Free Shipping around the world
▪ Broad range of products
▪ 30 days return policy

Contact Us