Awidget toolkit,widget library,GUI toolkit, orUX library is alibrary or a collection of libraries containing a set ofgraphical control elements (calledwidgets) used to construct thegraphical user interface (GUI) of programs.
Most widget toolkits additionally include their ownrendering engine. This engine can be specific to a certainoperating system orwindowing system or contain back-ends to interface with multiple ones and also with rendering APIs such asOpenGL,OpenVG, orEGL.Thelook and feel of the graphical control elements can be hard-coded or decoupled, allowing the graphical control elements to bethemed/skinned.
Some toolkits may be used from other languages by employinglanguage bindings.Graphical user interface builders such as e.g.Glade Interface Designer facilitate the authoring of GUIs in aWYSIWYG manner employing auser interface markup language such as in this caseGtkBuilder.
The GUI of a program is commonly constructed in a cascading manner, with graphical control elements being added directly to on top of one another.
Most widget toolkits useevent-driven programming as a model for interaction.[1] The toolkit handlesuser events, for example when the user clicks on abutton. When an event is detected, it is passed on to the application where it is dealt with. The design of those toolkits has been criticized for promoting an oversimplified model of event-action, leading programmers to create error-prone, difficult to extend and excessively complexapplication code.[2]Finite-state machines andhierarchical state machines have been proposed as high-level models to represent the interactive state changes for reactive programs.
Awindow is considered to be a graphical control element. In some windowing systems, windows are added directly to thescene graph (canvas) by thewindow manager, and can be stacked and layered on top of each other through various means. Each window is associated with a particular application which controls the widgets added to its canvas, which can be watched and modified by their associated applications.