'''[Tk] Commands''' is a list of commands that are built-in to [Tk]. ** Administration ** [console]: [loadTk]: [tk]: ** Data ** [image]: [bitmap]: [photo]: ** Dialogues ** [tk_chooseColor]: [tk_chooseDirectory]: [tk_dialog]: [tk_getOpenFile]: [tk_getSaveFile]: [tk_messageBox]: ** Event Management ** [bind]: [bindtags]: [event]: [tkwait]: ** Inter-Process Communication ** [send]: ** Facilities ** [clipboard]: [tkerror]: ** Fonts ** [font]: ** Geometry ** [grid]: [pack]: [place]: ** Control ** [bell]: [grab]: [focus]: [selection]: [tk_focusNext]: [tk_focusPrev]: [tk_focusFollowsMouse]: [tk_menuSetFocus]: [palette]: [tk_bisque]: [tk_setPalette]: [tk_textCopy]: [tk_textCut]: [tk_textPaste]: ** Reference ** [colors]: [cursors]: [options]: [keysyms]: [tkvars]: ** [Ttk%|%ttk] ** In Tk 8.5, the [Ttk] package becomes a part of the Tk distribution. Special information on some of these [tile]/[ttk] widgets: [tk::classic::restore]: [ttk::combobox]: [ttk::scale]: ** Variables ** [tkvars%|%Reserved variables] are (incomplete): [tk_library]: [tk_strictMotif]: [tk_version]: *** environment variables *** There are also some environment variables. ** Widgets ** [button]: [canvas]: [checkbutton]: [entry]: [frame]: [label]: [labelframe]: [listbox]: [menu]: [menubutton]: [message]: [panedwindow]: [radiobutton]: [scale]: [scrollbar]: [spinbox]: [text]: [tk_optionMenu]: [tk_popup]: [toplevel]: all the [Ttk] commands: ** Additional Widgets ** [HTML widgets]: tklib's widget package contains the following [megawidget]s: dialog: (a)synchronous dialog shell with core dialog handling menuentry: entry with dropdown menu panelframe: ruler: screenruler: this is cool, really! scrolledwindow: statusbar: for easier handling of bottom status items, with corner resize control superframe: an enhanced labelframe widget toolbar: Many third-party widgets are [Snidgets]. See that page for a list of Snidgets. ** Window Management ** [destroy]: [lower]: [option]: [raise]: [winfo]: [wm]: ** Obsolete Widgets ** [menubar]: [pack-old]: ** Internal Variables ::tk::psglyphs: ::tk::ps_preamble: ::tk::AlwaysShowSelection: ** Internal Commands ** ::tk::ConsoleInvoke: ::tk::ConsoleSource: ::tk::ConsoleExit: ::tk::ConsoleHistory: ::tk::ensure_psenc_is_loaded: an empty procedure that can be called to auto-load the postscript features of Tk ::tk::CreatePostscriptEncoding: ::tk::ps::literal: ::tk::ps::variable: ::tk::ps::function: ::tk::SetFocusGrab: ::tk::RestoreFocusGrab: ** See Also ** [megawidget]: [Tcl syntax]: [Widgets in the initial Tk package]: images of the various widgets. [Tk glossary]: Explains some terms occurring in the manpages. [widget]: general information widgets. [Tk widget sticky discussion]: ** Misc ** Note that in Tk, one has several ways one can control visual aspects of widgets: * externally, via the X resource database * at creation time, on the ''command line'' * later, using the `-config` option * via the [option] database * in some cases, via special objects, like [font] [[are there other ways of influencing these?]] ---- One must be certain to keep some things in mind when writing widget code: * Widget names are generally a series of period separated names. [[Can someone write more text here concerning the naming of widgets, naming hierarchy and what is for, how it contrasts with namespaces, etc.]] * If your widget names might have spaces in them, be certain to treat the names carefully, in particular when using [eval], [subst], etc. * [DKF] writes in comp.lang.tcl: It's also not a good idea at all to start a widget name part with a capital letter (because that style of name is reserved for the names of widget classes, and you *really* don't want to get those two mixed up.) But it's usually really easy to start with a lower-case letter and use alphanumeric for the rest... * [Jeff Hobbs] writes in comp.lang.tcl: [[Using :: as characters in a widgets name as a]] problem is much more difficult to get around for megawidget authors than the space one. Properly treating things as lists solves the space problem. However, the use of namespaces for megawidget building is common in order to encapsulate code / hide the ickies from the user. That conflicts with the use of ::. It is possible to rename the :: parts when you use namespaces, but then it becomes cumbersome to map back and forth. [RS]: As each widget defines a command with its name, can't interp aliases be used to map fancy to real names? E.g. ====== interp alias {} foo::bar {} .top.frame1.bar.canvas ====== ---- [LV]: So, if someone has a string that they are ''certain'' is a name of a widget, is there introspection that can be used to determine '''what''' widget it is? [escargo] 2005-08-16: I would expect `[winfo] exists` should be able to answer that question. [LV]: `winfo exists` just tells me if the widget exists - not what kind of a widget it is. Thanks! [MG]: How about `winfo class $widgetName`? [LV]: That seems like it should work - thanks! ---- [RS] 2006-04-28: Here's a little helper to retrieve the default value of a widget attribute (use long names (-background) instead of the short ones (-bg)): ======none % proc get'default {w flag} {lindex [$w config $flag] 3} % get'default $t -font {MS Sans Serif} 8 ====== The current value is of course returned by the ''cget'' method: ======none % $t cget -font Courier 9 ====== <> Command | Syntax | Arts and Crafts of Tcl-Tk Programming