This article provides a list of widget toolkits (also known as GUI frameworks), used to construct the graphical user interface (GUI) of programs, organized by their relationships with various operating systems.

Low-level widget toolkits

Integrated in the operating system

As a separate layer on top of the operating system

High-level widget toolkits

Widget toolkit comparison table
Toolkit name Windows macOS Unix-like Programming language License
AWT cross-platform Java
CEGUI Yes Yes Yes C++ MIT
Cocoa Partial Yes No Objective-C Proprietary
Elementary Yes Yes Yes C LGPL, BSD
FLTK Yes Yes Yes C++ LGPL
Fox toolkit Yes No Yes C++ LGPL
Fyne cross-platform Go BSD
GNUstep Yes Yes Yes Objective-C LGPL
GTK Yes Yes Yes C LGPL
Kivy cross-platform Python MIT
LCL Yes Yes Yes Object Pascal (Free Pascal) LGPL
IUP Yes No Yes C MIT
Juce cross-platform C++ GPL, proprietary
LessTif No No Yes C LGPL
Motif No No Yes C LGPL
MFC Yes No No C++ Proprietary
Nana C++ Yes No Yes C++ Boost license
OWL (superseded by VCL) Yes No No C++ (Borland C++) Proprietary
Pivot (WTK) cross-platform Java Apache License
Qt cross-platform C++ LGPL, proprietary
Rogue Wave Views Yes No Yes C++ proprietary
Shoes (GUI toolkit) cross-platform Ruby MIT
Swing cross-platform Java
Tk Yes Yes Yes C BSD
TnFOX Yes Yes Yes C++ LGPL
U++ cross-platform C++ BSD
VCL (supersedes OWL) Yes No No Object Pascal (Delphi) Proprietary
WTL Yes No No C++ Microsoft Public License
wxWidgets cross-platform C++ WxWindows license

OS dependent

On Amiga

On macOS

On Microsoft Windows

On Unix, under the X Window System

Note that the X Window System was originally primarily for Unix-like operating systems, but it now runs on Microsoft Windows as well using, for example, Cygwin, so some or all of these toolkits can also be used under Windows.

Cross-platform

Based on C (including bindings to other languages)

Based on C++ (including bindings to other languages)

Based on Python

Based on OpenGL

Based on Flash

Based on Go

Based on XML

Based on JavaScript

Main article: JavaScript library

General

RIAs

Full-stack framework

Resource-based

No longer developed

Based on SVG

Based on C#

Based on Java

Based on Object Pascal

Based on Objective-C

Based on Dart

Based on Swift

Based on Ruby

Not yet categorised

Comparison of widget toolkits

Toolkit Initial release Latest release Main language Bindings Tools License Pros Cons Back-end
ATL, WTL 2004 C++ Visual Studio not portable
AWT 1995 Java portable
CEGUI 2004 0.8.7 (April 28, 2016; 7 years ago (2016-04-28)) [±][6] C++ Python,[7] Lua (using tolua++)[8] CEED[9] MIT License Free license, fast, cross-platform, portable, free GUI editing tool
Clutter 2006 C Perl, Python, C#, C++, Vala, Ruby LGPL GTK and WebKit embedding
CLX C++
Elementary 2007 (EFL: 2001) 2016 C JavaScript, Python, Vala, C++ editje, edje LGPL Portable, stable, fast, finger-friendly
FLTK 1998 2019 C++ Python (pyFLTK), Perl (FLTK.pm), Ruby (Ruby/FLTK), Tcl (Tcl Fltk), Guile (guile-fltk), Eiffel (IFLTK) FLUID (Fast Light UI Designer) LGPL (with an exception that allows static linking) fast, small enough to static link limited widget selection
Flutter 2017 Dart Portable, cross platform, free license, rich widget set
FOX 1997 C++ Ruby (FXRuby), Python (FXPy), Eiffel (EiffelFox) consistent across platforms non-native look and feel
Fyne 2018 2020 (1.3.2) Go BSD consistent across platforms, no runtime dependency requires OpenGL
GLUI C++
GNUstep 1994 2017 Objective-C Java, Ruby, Scheme Gorm (computing) GPL for the apps, LGPL for the libs Portable, free license Native on macOS (with Cocoa) X11, Win32, Wayland
GTK 1997 4.6.0[10] (December 30, 2021; 2 years ago (2021-12-30)) [±] C C++ (gtkmm), Perl (Gtk2-perl), Ruby (ruby-gtk2), Python (PyGTK), Haskell (Gtk2Hs), Java (java-gnome) (not available for Microsoft Windows), C# (Gtk#), PHP (PHP-GTK), Ada (GTKAda), D (gtkD), FreeBasic (GladeToBac), Go (go-gtk), OCaml (lablgtk), JavaScript (Gjs, Seed (programming)), Fortran (gtk-fortran), Lua (lua-lgi), R (RGtk2) and others via GTK-server Glade, GNOME Builder LGPL Portable, free license Partly native only.[11][12]
IUP 1992 2019[13] C Lua (IupLua)[14] LEDC: a compiler for LED MIT Portable, lightweight, use the native API, native look&feel, free licence Non‑Unicode (only plain ASCII)[15]
Juce 2004 C++ Jucer GPL, commercial Cross-platform, with additional audio plug-in wrapping tools (VST, RTAS, AAX etc.) The free version has a splash screen.
MFC, WinAPI 1992 C++ Visual Studio not portable (but Wine implements it for X Window)
Motif, Lesstif 1980s C BX Pro
Nana C++ 2007 1.7.4 (16 May 2020; 3 years ago (2020-05-16)) [±][16] C++ VisualStudio, Dev-C++, Code::Blocks, GCC portable, lightweight, modern C++ style
Qt 1991 6.5 LTS[17] (3 April 2023; 12 months ago (2023-04-03)) [±] C++ Ruby (QtRuby), Python (PyQt, PySide, PythonQt), Ada (QtAda), c# (Qyoto), Java (Qt Jambi), Pascal (FreePascal Qt4), Perl (Perl Qt4), PHP(PHP-Qt), Haskell (Qt Haskell), Lua (lqt, QtLua), Dao (DaoQt), Tcl (qtcl), Common Lisp (CommonQt), D (QtD), Harbour (hbqt) Qt Designer, Qt Creator GPL, LGPL.[18] Portable, rich widget set, GUI builder, free license, stable API Partially native only.[19][20][21]
Rogue Wave Views 1993 2014 (5.8) C++ ivfstudio proprietary portable (Windows, Unix-like), good support commercial
Shoes (GUI toolkit) 2007 2010 Ruby MIT license/Open source Simplicity, ease of use
Swing 1996 Java Eclipse, NetBeans GPL for OpenJDK Portable (Java), advanced widgets, GUI builders
JavaFX 2008 2022 Java NetBeans, Scene Builder GPL
SWT Java D (DWT) Eclipse portable
Tk 1991 2015 C, Tcl Ruby (RubyTk), Python (Tkinter), Perl (Perl/Tk), Ada (TASH), Common Lisp (LTk), Erlang (etk), ... | BSD very portable, many language bindings
U++ 2004 2022 C++ theIDE BSD portable, NTL, free license Underdeveloped on android
VCF C++ BSD free license
VCL Delphi
Windows Forms CLI languages CLI languages Expression, Visual Studio portability issues, no MVC
WPF, XAML, Silverlight 2007 CLI languages CLI languages Expression, Visual Studio Portability issues
wxWidgets 1992 3.2.4 (11 November 2023; 5 months ago (2023-11-11)

[22]) [±]

C++ C++ (native), Ruby (wxRuby), Python (wxPython), Perl (wxPerl), Java (wxJava, jwx!), Lua (wxLua), Tcl(wxTCL), JavaScript (GLUEscript), Smalltalk (wxSqueak), Erlang (wxErlang), Haskell (wxHaskell), C (wxC), D (wxD), .NET framework (wxNet), Common Lisp (wxCL), Basic (wxBasic), BlitzMax (wxMax), Euphoria (wxEuphoria), Ada (wxAda), Pike (wxPike) VisualWx, Boa Constructor, PythonCard, Spe, XRCed, wxGlade, wxFormBuilder, DialogBlocks ($), wxDesigner ($) wxWindows License Portable, rich widget set, free licence, semantic similarities to MFC make migration easy.
Xaw, Athena 1983 1.0.13[23] C MIT X11
XUL XML, JavaScript portable
XVT 1989 2010 C and C++ Design for C and architect for C++ Proprietary Cross-platform, rich widget set, C and C++ GUI builders, very stable
Toolkit Initial release Latest release Main language Bindings Tools License Pros Cons Back-end

See also

References

  1. ^ Microsoft: MS Windows NT Kernel-mode User
  2. ^ Techworld: Microsoft to move graphics outside OS kernel
  3. ^ Teixera, Pacheco, Steve, Xavier (2001). Borland Delphi 6 Developer's Guide. Sams Publishing. p. 382. ISBN 0-672-32115-7.((cite book)): CS1 maint: multiple names: authors list (link)
  4. ^ This version provides the core API of the .NET Framework 2.0, but its implementation of this API is still incomplete.
  5. ^ Qt Software to discontinue Qt Jambi after 4.5 release Archived 26 July 2009 at the Wayback Machine
  6. ^ https://github.com/cegui/cegui/releases/tag/v0-8-7
  7. ^ "PyCEGUI - CEGUI Wiki - Crazy Eddie's GUI System (Open Source)".
  8. ^ "Extending your Lua Interface - CEGUI Wiki - Crazy Eddie's GUI System (Open Source)".
  9. ^ "CEED - CEGUI Wiki - Crazy Eddie's GUI System (Open Source)".
  10. ^ https://gitlab.gnome.org/GNOME/gtk/-/tags/4.6.0
  11. ^ Migrating to client-side windows Archived 27 April 2011 at the Wayback Machine: "GDK looks for the GDK_NATIVE_WINDOWS environment variable and makes all windows native if it is set. It also tries to be more compatible with the way prior versions worked in some other ways."
  12. ^ Coding Horror: Non-Native UI Sucks: "[…] has a cross-platform UI based on GTK, which produces predictably bland, least-common-denominator results:"
  13. ^ "IUP - Browse /3.28 at SourceForge.net".
  14. ^ "IUP - Portable User Interface".
  15. ^ Comparing IUP with Other Interface Toolkits: "[…] it does not have support for Unicode characters."
  16. ^ "Nana C++ Library - a modern C++ GUI library".
  17. ^ "Qt 6.5 Release". www.qt.io. The Qt Company. Retrieved 20 December 2023.
  18. ^ Nyström, Sebastian (14 January 2009). "Nokia to license Qt under LGPL". Archived from the original on 11 November 2013.
  19. ^ WxWidgets Compared To Other Toolkits: "Qt doesn't have true native ports like wxWidgets does. Qt does not use system provided widgets, but emulates it with themes. What we mean by this is that even though Qt draws them quite realistically, Qt draws its own widgets on each platform."
  20. ^ "Qt Modular Class Library". Digia. Archived from the original on 1 November 2013. Qt uses the native graphics APIs of each platform it supports, taking full advantage of system resources and ensuring that applications have native look and feel.
  21. ^ "The Qt 4 Style API". The Qt Company. Qt's built-in widgets use [QStyle] to perform nearly all of their drawing, ensuring that they look exactly like the equivalent native widgets.
  22. ^ "wxWidgets: 3.2.4 Released". 11 November 2023. Retrieved 11 November 2023.
  23. ^ Alan Coopersmith (30 April 2015). "[ANNOUNCE] libXaw 1.0.13". xorg-announce@lists.x.org (Mailing list). Retrieved 1 July 2020.