Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Widget toolkit
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Framework or toolkit a program uses to display the graphical user interface}} A '''widget toolkit''', '''widget library''', '''GUI toolkit''', or '''UX library''' is a [[library (computing)|library]] or a collection of libraries containing a set of [[graphical control element]]s (called ''widgets'') used to construct the [[graphical user interface]] (GUI) of programs. Most widget toolkits additionally include their own [[Rendering (computer graphics)|rendering engine]]. This engine can be specific to a certain [[operating system]] or [[windowing system]] or contain back-ends to interface with multiple ones and also with rendering APIs such as [[OpenGL]], [[OpenVG]], or [[EGL (API)|EGL]]. The [[look and feel]] of the graphical control elements can be hard-coded or decoupled, allowing the graphical control elements to be [[Theme (computing)|themed]]/[[Skin (computing)|skinned]]. ==Overview== [[File:SWT-on-mac.png|thumb|A window using the [[Standard Widget Toolkit]]]] Some toolkits may be used from other languages by employing [[language binding]]s. [[Graphical user interface builder]]s such as e.g. [[Glade Interface Designer]] facilitate the authoring of GUIs in a [[WYSIWYG]] manner employing a [[user interface markup language]] such as in this case [[GtkBuilder]]. 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 use [[event-driven programming]] as a model for interaction.<ref>[http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.45.9491 Past, Present and Future of User Interface Software Tools]. Brad Myers, Scott E. Hudson, Randy Pausch, Y Pausch. ACM Transactions on Computer-Human Interaction, 2000. [https://www.cs.cmu.edu/~amulet/papers/futureofhciACM.pdf]</ref> The toolkit handles [[Event handler|user events]], for example when the user clicks on a [[Button (computing)|button]]. 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 complex [[application code]].<ref name=Samek03b>{{cite web | title = Who Moved My State? | author = Samek, Miro | url = http://www.ddj.com/cpp/184401643 | publisher = C/C++ Users Journal, The Embedded Angle column | date = April 2003}}</ref> [[Finite-state machine]]s and [[UML state machine|hierarchical state machines]] have been proposed as high-level models to represent the interactive state changes for reactive programs. == Windowing systems == A [[window (computing)|window]] is considered to be a graphical control element. In some windowing systems, windows are added directly to the [[Canvas (GUI)|scene graph (canvas)]] by the [[window 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. ==See also== * [[WIMP (computing)]] * [[Layout manager]] * [[List of widget toolkits]] == References == {{Reflist}} {{Widget toolkits}} {{Graphical control elements}} {{X desktop environments and window managers}} [[Category:Widget toolkits| ]] [[Category:Graphical user interfaces]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite web
(
edit
)
Template:Graphical control elements
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Widget toolkits
(
edit
)
Template:X desktop environments and window managers
(
edit
)