Penguin
Note: You are viewing an old revision of this page. View the current version.

GUI ToolKits are libraries written to ease the task of writing GUI applications by abstracting the drudgework away from the programmer. As an added bonus, they offer a consistent look between applications that use the same one.

In a GUI application written without a ToolKit the actual program is a long loop that continuously calls a function to poll incoming events and then feeds them into a huge switch construct that decides how to react to each event. Every single facet of the application's behaviour has to be reflected here. Needless to say, writing non-trivial applications this way is tiresome at best.

A GUI ToolKit's main responsibility is to abstract away this event loop in a way that it can be maintained and extended easily. To this end, the different "widgets" (such as buttons, labels, menus etc) of a GUI are treated as black boxes. An EventModel is then specified, which defines how events "propagate" across these blackboxes. The EventModel is a large factor in the design of an application's architecture. Different ToolKits tend to use very different EventModels, which can cause a great deal of confusion.

Popular ToolKits include

  • GTK+?, the GimpToolKit, written in C but with bindings for many other languages, is the first choice for most any serious application on Linux and foundation of the GNOME DesktopEnvironment
  • Qt, written in and for C++, is the ToolKit the KDE DesktopEnvironment is built on top of
  • Tk, a rather crufty and baroque ToolKit, was originally made for TCL, but now has bindings for several other scripting languages, most notably Perl
  • AWT, the first ToolKit of the Java class library
  • Swing, a more modern ToolKit that superseedes AWT in the Java class library
  • Motif?, which is only of historical interest anymore