Updated 2014-04-09 03:10:18 by pooryorick

Tk, by John Ousterhout, is a graphical toolkit for Tcl, providing the tools necessary to to develop graphical applications that run on Windows, Linux, MacOSX and many other platforms.

Tk stands for "toolkit".

Development  edit

official source code repository
bug tracker
sourceforge project page (alternate)
hosts the histoical source code repository and bug tracker

Description  edit

As is well known, most Tcl distributions provide two interpreters, tclsh and wish. The main differences between these are that wish automatically starts Tk and on Windows doesn't pop up a DOS console window ([puts] commands to standard output just don't go anywhere). Until recently, for technical reasons using wish had to be the only way to get at Tk. However, in later versions by using Tk as a loadable package you can use it via tclsh and still have full console access on all platforms.

Many other languages have Tk packages; some of which work by loading all of Tcl in and then executing Tk commands. Perl/Tk, on the other hand, rewrote all of Tk in a way that wasn't bound to Tcl, for example. See Tcl and other languages.

Tk Package  edit

see Tk Package

Tk Command  edit

tk is also the name of a Tk command. See:

http://www.tcl.tk/man/tcl/TkCmd/tk.htm
tk appname ?newName?
tk busy subcommand ...
[tk caret] window ?-x x? ?-y y? ?-height height?
tk inactive ?-displayof window? ?reset?
tk fontchooser subcommand ...
tk scaling ?-displayof window? ?number?
tk useinputmethods ?-displayof window? ?boolean?
tk windowingsystem

Features  edit

Drag and Drop support
Tk's copy and paste support
support for unicode display
support for multiple monitors

Introductions  edit

An Overview of Tcl and Tk
An X11 Toolkit Based on the Tcl Language
the first presentation of Tk, Circa 1991
Intro to Tk
describes what Tk is and why it is so unique.
Building User Interfaces with Tcl and Tk
Tk Sets The Standard by Cameron Laird and Kathryn Soraiz

Tutorials  edit

online Tcl and Tk tutorials
Beginning Tk
Tk resources at the beginning level
A Tcl(Tutorial for Cool Languages) for Tcl/Tk
by Binny V A, andin Perl.

Documentation  edit

reference manual
Tk Commands
Tk syntax help
basic Tk syntax
Ttk
Themed Tk, now part of Tk
Updated Tcl/Tk Quick Reference Guide
Paul Raines' reference, updated by Dave Bodenstab.
Tcl/Tk Quick Reference Guide
by Paul Raines. Printable.
Tk coding styles and philosophies
best coding practices for Tk
User Interface Design for Tcl/Tk
Tk Sets The Standard by Cameron Laird and Kathryn Soraiz
Cameron Laird's personal notes on Tk
CL hints at the advantages Tk interfaces enjoy over both Web applications and traditional Visual Basic form-oriented GUIs. He's published dozens of other articles on various aspects of Tk
Cross Platform differences in Tcl/Tk

Instructional Pages  edit

Bag of Tk algorithms
useful Tk code examples
Tk examples
more Tk examples

Programs  edit

Tk Programs
Tcl/Tk games

See also  edit

addinput
built-in visual elements
Category Tk Library
for discussions on various functions in the Tk C APIs.
Coming to Tcl/Tk from an IDE environment
GUI Building Tools
History of Tk
How Tk compares to other GUI toolkits
Beginning Tcl
megawidget
taming wild windows
The TK GUI - Q&A
tktoolkit
TkDocs: Mark Roseman's
valuable ste focuses on "the latest modern Tk features ...".
Useful Tk Widgets
a catalog of widgets
tkGUIs
of various applications]

Design  edit

Tk has an Xlib Emulation Layer XLEL, which is one part in making Tk work across different platforms.

That there is such a level is an important reason why Tk generation when X11 headers are missing can be an issue: the Tk source uses X11 headers even when Tk at runtime uses some other windowing system.

double-buffering examples; ...]

Discussion  edit

RS 2013-10-08 - I just spent some time debugging an app where, mysteriously, switches disappeared from the command line (argv). Turned out that Tk snatched them away. Demonstrations in an interactive tclsh:
 % set argv {-c 1 -d 2 -g 3 -n 4 -s 5 -u 6 -v 7}
 -c 1 -d 2 -g 3 -n 4 -s 5 -u 6 -v 7
 % package require Tk
 this isn't a Tk applicationwindow "6" doesn't exist
 % set argv
 5

The Tk options are documented:
 -colormap new
 -display display
 -geometry geometry
 -name name
 -sync
 -use id
 -visual visual
 --

and a 1-character match is sufficient to take them away (the "5" remained because the -s option does not take an argument). Solution, if you don't want to use any of the Tk options: insert the protective -- at the beginning of argv:
 % set argv {-c 1 -d 2 -g 3 -n 4 -s 5 -u 6 -v 7}
 -c 1 -d 2 -g 3 -n 4 -s 5 -u 6 -v 7
 % set argv [linsert $argv 0 --]
 -- -c 1 -d 2 -g 3 -n 4 -s 5 -u 6 -v 7
 % package require Tk
 8.4
 % set argv
 -c 1 -d 2 -g 3 -n 4 -s 5 -u 6 -v 7

Martyn Smith - The other choice is to protect the argv variable contents before running the package require that way the end user does not need any special action.

Has anyone been thinking adding a tutorial for Tk into the Tk source code distribution, similar in concept to the Tcl tutorial being added in Tcl 8.5?

DKF: Thinking? Yes. Doing anything about it? No. A set of lessons for Tk would be a very welcome addition!

[Things to explain: Bryan Schofield's posting on multiple Tk interpreters;

[Insert here pointers and discussions regarding Tk features]