**Brief intro to Tk** [Tk] windowing toolkit, written in [C], designed to give the programmer a relatively high level interface to his or her windowing environment. Tk is equally available as a windowing toolkit for Tcl, Ruby, Perl, Python. [TkDocs] has the best overview of how this compares. Tk started life as a [Tcl] [extension]. "Tk" occasionally is used when referring to * the programming toolkit, available for many languages * the Tk C library, which is available for applications built in such languages as C, [Perl], and so on * the [wish] [interpreter] which instantiates a Tk console * the Tk extension, which adds a number of new commands to a particular Tcl interpreter On a Macintosh, Tk provides interfaces to the [MacOS] windowing system. On [Microsoft Windows] 95/98/NT/2000/2003/XP/Vista/..., Tk provides interfaces to the [Microsoft] windowing system. On the other platforms where Tk is available, Tk 8.[[0-4]], updated to look very similar to [Motif], but not using the Motif libraries. Prior to that Tk provides interfaces to the [X] window system using a Tk specific look and feel. Tk 8.[56] have undergone tweaking so that applications look more like other applications on the platform on which the application is running. ***Tk in the Web Browser*** Tk applications run on the desktop, not in the browser. Strategically this means Tk apps will become less prevalent if most applications move to web-based software. Tk is not universally available for the browser, so programs written in Tk can only really work on the desktop. * The [Introducing The TCL Plugin%|%TkPlugin] is not available for the Mac * Where it is available it is largely out of date. * There does exist [aejaks], a Tk-like bridge to Java-based echo widget set. Programs written in Tk will not work in Aejaks as the widget set is different. * In 2000 there was an effort, named [proxyTk], [Proxy Tk] to provide full-Tk in the browser. This effort has ceased. * Your best bet is [Porting a Tk GUI to A Web Browser], but then it won't work on the desktop * In short, Tk is not a universal solution. ***Source Code*** You can find the source code for Tk at http://sourceforge.net/projects/tktoolkit/ . ***History of Tk*** Tk was written by [John Ousterhout], the creator of Tcl. A [PostScript] version of the paper where Tk was introduced to the world can be found at ftp://www.tcl.tk/pub/tcl/doc/tkUsenix91.ps . The PostScript for slides used by Dr. [John Ousterhout] during [USENIX] tutorials on Tcl and Tk can be found at ftp://www.tcl.tk/pub/tcl/doc/tut.tar.Z . ***Tk Widget Set*** Tk allows you to create, manage, and manipulate '''[widget]s''', rectangular areas on the screen with various features, from which you can build quite powerful [GUI]s with little effort. In Tk, the programmer only needs to specify how the widgets are arranged in a window (layout); the [geometry] of widgets is dynamic, so they can respond automatically both to changes in layout and to user resizing of windows. Some examples of widget types are: * [button] (with text or image): executes a command when clicked * [label] (with text or image): shows info, can be updated from a variable * [text] widget: holds text in various fonts, colors, styles; can also hold embedded images and widgets; can wrap and/or be scrolled * [canvas]: holds graphic objects (including text, images, widgets) * [listbox]: holds text lines from which to select * [scrollbar]: controls the display within another widget through the slider and the 2 arrows at each end. * [scale]: horizontal or vertical, allows setting a numeric value ''[[Isn't [scale] rather similar to [scrollbar], though? Perhaps [menu] would be a better example of showing the breadth of the widget concept.]]'' For sample images, look at [Widgets in the initial Tk package]. To understand the model for how GUI applications are built and operated see [TkDocs]. See [Beginning Tk] for more information. ***Tutorials*** There are many [online Tcl and Tk tutorials], perhaps starting with [an overview of tcl and tk]; [Tcl Tutor] is quite popular as a desktop computer aided instruction application for the base Tcl language. ---- Also of interest might be [Alternate toolkit bindings], [Common Tk Error Messages and Possible Explanations], ***Alternate Widget Sets*** See [Alternate widget sets] ---- See [What is Tcl] for information about the initial language that formed a basis for Tk. <> Tutorial | Tk syntax help | Arts and crafts of Tcl-Tk programming | TOC