[[hopefully someone will write an introduction to tk, explaining its virtues]] * What is Tk [Tk] is a [Tcl] [extension] designed to make creating [GUI] interfaces simple, yet giving said applications remarkable power for all their simplicity. * What makes it unique The Tk [canvas] is one of the more powerful [widget]s developers have found. The Tk [text] widget has built in hypertext and undo/redo capability. Tk was designed for rapid development. ---- '''Hints for beginners''' (things that may not be obvious if you come to Tk from the wrong community): ''The window concept'' 1. Every rectangular unit (in particular: the various widgets) on the screen is called a '''window'''. Windows as in "document window" is a [toplevel]. 1. Windows (toplevels excepted) do not show on screen until they have become mapped. This happen when they are assigned a geometry manager, such as [pack] or [grid]. 1. Every window has a unique name, which is also the name of a command. This command -- the "widget command" -- is used to control the window: change contents, set options, change view, etc. 1. Windows are created and destroyed in a hierarchy. This hierarchy is visible in the window names: removing the last period (.) and all that follows it from a window name gets you the name of the parent window. (Exception: the root window is called "." (one period) rather than "" (empty string) as this rule would imply.) All window names start with a period. To illustrate some of these points. you can start [wish] and type the following commands % canvas my_canvas -width 100 -height 100 bad window path name "my_canvas" `my_canvas` can't be the name of a window, since it doesn't begin with `.`. % canvas .my_canvas -width 100 -height 100 .my_canvas Much better. Now that we have a 100x100 pixels canvas, let's put something on it, e.g. a thick line from (10,10) to (90,90). % .my_canvas create line {10 10 90 90} -width 10 1 The line is item 1 on this canvas, but strangely enough nothing shows up on the screen (Wish's window is as empty as when we began). Even worse, there seems to be some confusion about how large the canvas is: % winfo width .my_canvas 1 % .my_canvas cget -width 100 The reason for this is found in the following: % winfo ismapped .my_canvas 0 The canvas doesn't appear on screen because it isn't mapped yet. [pack] can do that for us: % pack .my_canvas Bam! A thick line appears in wish's window (that might also resize because of this). [winfo] returns data more in line with what one might expect: % winfo ismapped .my_canvas 1 % winfo width .my_canvas 106 ---- Some example programs: * [Simple Canvas Demo] * [Simple Entry Demo] ---- !!!!!! %| [Category Documentation] |% !!!!!!