Version 36 of eWidgets Toolkit

Updated 2003-09-14 22:39:44

MGS The eWidgets Toolkit is a collection of extended widgets and dialogs for Tcl/Tk. Each widget/dialog is designed to be self-contained, efficient, lightweight, cross-platform, and to work equally well on large and small displays.

This will form the basis for my other project Mogul.

eWidgets was originally going to be a substantial rewrite of the BWidget toolkit, but I got very bogged down in the complexity of its internal architecture. I also had already written many new widgets, so they have formed the basis of this toolkit.

I would like to hear from anyone who has comments (good and bad) about BWidgets and other mega-widget libraries. In particular, things that don't work, things that are missing, extra functionality, etc. And if you're looking for a new kind of widget that doesn't exist, I might be interested in writing it. I'm always looking for new and better ways of doing things. Please feel free to drop me line at markgsaye @

Q. Where does one find this toolkit? I don't see a URL.

A. One doesn't, yet. I'm still very busy writing it. When I have an architecture which is somewhat stable, with widgets that work (!), some examples, and a smidgin of documentation, I will make an announcement, and upload stuff to and .

Here's a partial list of widgets, dialogs and libraries that will be included:


  • button - generic button/checkbutton/radiobutton widget (designed for toolbars)
  • combobox - combobox widget (uses popup widget)
  • date - date selector widget (useful with popup widget)
  • drop - collapsible drop-frame widget
  • filelist - listbox file browser widget
  • filetree - tree file browser widget (using tree widget)
  • frame - scrollable frame widget
  • mdi - MDI widget
  • menubar - menubar widget (using user-definable menu configuration files)
  • notebook - notebook widget
  • panel - panel widget (like MS Outlook)
  • pathentry - file/path-completion entry widget
  • popup - popup widget (e.g. as used by combobox)
  • progress - progress bar widget
  • scroll - scrollable-widget widget (with scrollbars that appear only when needed)
  • scroller - 2d x/y scrollbar (similar to BWidget's ScrollView)
  • slide - slide widget (similar to scale widget)
  • spinbox - spinbox widget
  • text::listbox - hierarchical listbox widget
  • text::map - graphical widget to display text widget search results (adapted from Roy Terry's Hits!)
  • titleframe - titleframe widget
  • toolbar - toolbar widget (uses grid and clone libraries)
  • tooltip - tooltip widget (balloon help)
  • tree - canvas-based tree widget
  • window - generic window/toplevel widget


  • dialog - generic dialog window
  • dialog::color - color selector dialog
  • dialog::directory - directory selector dialog
  • dialog::error - improved bgerror dialog
  • dialog::file - file selector dialog
  • dialog::fileprop - file properties dialog
  • dialog::font - font selector dialog
  • dialog::message - message dialog
  • text::find - text find dialog/widget
  • text::goto - text goto dialog/widget


  • canvas - library of canvas widget routines (convert to polygon, reflect, rotate, see, tile)
  • clone - library to enable cloning of widgets (including heirarchies), procs (see cloneProc), namespaces, variables, images, etc. Widget tree cloning should be useful for tearoff toolbars (i.e. clone a frame to a toplevel).
  • color - library of color routines (see bevel 3d)
  • file - library of useful file commands
  • focus - library to manage a stack of focus requests
  • font - library of font routines
  • grab - library to manage a stack of grabbed windows
  • grid - library of grid routines (reflecting/inverting/transposing/inserting & deleting columns & rows/etc)
  • icon - library of icon routines (finding, refcounting, etc)
  • image - library of image routines (sizes, etc)
  • interp - library of interp routines (notably the ability to dump the state of an interp)
  • label - library of label widget routines (wrapping, selection) See [L1 ]
  • list - library of useful list commands
  • listbox - library of listbox widget routines (move selection up & down)
  • text - library of text widget routines (maybe)
  • text::sync - library to synchronize two or more text widgets
  • window::or - library to handle full-screen windows


I will put links here to individual packages as and when they become available:

LV [2003/05/14] Q. How do the entries above such as text, frame, etc. that are currently in Tk differ from the Tk versions?

MGS - At the moment, I'm not sure that the text library will exist. It was intended for a collection of miscellaneous text widget commands, most of which have now been split out into separate libraries/widgets such as text::find, text::goto etc.

The label library contains miscellaneous commands specific to label widgets. For example, see label selection and label wrapping. See also: [L2 ]

The canvas library contains miscellaneous commands specific to canvas widgets. For example: canvas::see, canvas::tile, canvas::convert, canvas::rotate, and more.

The window widget is effectively just a toplevel with some syntactic sugaring to incorporate some extra properties, notably the toplevel-specific options from the wm command. i.e. you could do things like: window .mywin -title "My Window Title" -propagate 0 -transient . . This also means that you can put wm properties into the options database.

The frame widget is a scrollable frame widget, but not using a canvas as most scrollable widgets do. The scrollable area of the widget works more intuitively (I think) than, say, the BWidget's version.

The listbox library contains miscellaneous commands specific to listbox widgets: moving the selection up/down, deleting the selection, chronological selection, sorting, etc.

Category Package | Category GUI