Version 116 of Tk

Updated 2013-11-23 19:01:26 by pooryorick

Summary

Information about The Tk toolkit

Description

Tk is a graphical toolkit for Tcl. It allows you to develop graphical applications that run on Windows, Linux, MacOSX and many other platforms. Tk stands for "toolkit".

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

see Tk Package

Tk Command

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

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

Introductions

An Overview of Tcl and Tk
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

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

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

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

Programs

Tk Programs
Tcl/Tk games

See also

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

Design

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

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]