What is Tk

Difference between version 79 and 81 - Previous - Next
!!!!!!
|[What is Tcl%|%previous : What is Tcl?]|[Contents%|%up: Contents]|[Who Uses Tcl%|%next : Who Uses Tcl]|
!!!!!!


** Brief intro to [Tk] **
The [Tk] windowing toolkit, written in [C], is designed to give the programmer a relatively high level interface to theis 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.

**** 2017-12-09 : Check out CloudTk [https://wiki.tcl.tk/41972] for viewing Tk apps in a browser. ****

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***

See [Tk]


----
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.

!!!!!!
|[What is Tcl%|%previous : What is Tcl?]|[Contents%|%up: Contents]|[Who Uses Tcl%|%next : Who Uses Tcl]|
!!!!!!
<<categories>> Tutorial | Tk syntax help | Arts and crafts of Tcl-Tk programming | TOC