[[Inhaltsverzeichnis()]] Wer ein eigenes Programm erstellen möchte, das nicht nur über die Kommandozeile bedienbar ist, sondern eine grafische Benutzeroberfläche (kurz: [wikipedia:GUI:], Abkürzung für "Graphical User Interface") haben soll, greift zum Erstellen normalerweise auf eine der im folgenden (kurz) vorgestellten Bibliotheken zurück. Diese stellen in der Regel alle Elemente zum Erstellen einer GUI wie Schaltflächen, Eingabefelder, Auswahlfelder, Dialogboxen etc bereit. Der Umfang an weiteren / zusätzlichen Funktionen variiert teilweise stark zwischen den Bibliotheken, des weiteren gibt es Unterschiede bei der Unterstützung verschiedener Betriebssysteme außerhalb von Linux und auch der Unterstützung von Touchscreens zur Eingabe. Wer ein Programmierprojekt mit einer GUI angehen möchte, sollte sich von daher zumindest mehrere GUI-Toolkits anschauen und dann das auswählen, was den eigenen Ansprüchen und Anforderungen am besten entspricht. Die beiden meistgenutzten Bibliotheken sind sicherlich GTK+ und Qt, welche auch von einer Vielzahl von grafischen Programmen in den Ubuntu-Quellen genutzt werden. Die [:Desktopumgebung:Desktopumgebungen] [:GNOME:], [:Xfce:] und [:MATE:] nutzen ebenfalls das GTK+-Toolkit, während [:KDE:] und [:LXQt:] auf Qt setzen. = Qt = Die erste Version von Qt erschien im Jahr 1995. Das GUI-Toolkit ist dual-Lizensiert, d.h. es gibt sowohl eine Open-Source Lizenz (LGPL) als auch eine kommerzielle Lizenz. Die aktuelle Version von Qt ist 5.x, welche seit Ende 2012 existiert. Es gibt in den Ubuntu-Quellen aber auch noch Pakete und Programme, die auf dem älteren Qt 4.x basieren. Qt bietet zusätzlich zu den GUI-Elementen umfangreiche weitere Bibliotheken (z.B. zur Datenbankanbindung) und läuft auf allen gängigen Plattformen wie Linux, MacOS, Windows, Android und iOS. Qt ist in C++ geschrieben, es gibt aber [https://wiki.qt.io/Language_Bindings Anbindungen] {en} für viele weitere Programmiersprachen. == weiterführende Links == * [:Qt:] - Wikiartikel zu Qt: Installationshinweise, Entwicklungsumgebungen, Programmbeispiel * [https://www.qt.io/ Homepage] {en} von Qt * [https://resources.qt.io/ Qt Resource Center] {en}, umfangreiche Dokumentation zu Qt * [https://wiki.qt.io/Main Wiki] {en} zu Qt * [wikipedia:Qt_(Bibliothek):Wikipedia Artikel] zu Qt = GTK+ = GTK steht für '''G'''imp '''T'''ool '''K'''it, weil der Ursprung des Projekt 1998 die Schaffung einer graphischen Oberfläche für das Grafikprogramm [:GIMP:] war. GTK+ ist aber schon lange eine universelle GUI-Bibliothek, mit der sich Programme mit einer grafischen Oberfläche von einfach bis komplex entwickeln lassen. Die Bibliothek steht unter der OpenSource Lizenz [https://opensource.org/licenses/LGPL-2.1 LPGL 2.1] {en}. Die aktuelle Version ist GTK 3.x, welche seit 2011 existiert. In den Ubuntu-Quellen gibt es aber auch noch Pakete, die das ältere GTK 2.x einsetzen. GTK+ kann unter den gängigen Betriebssystemen Linux, Windows und MacOS installiert werden. GTK+ ist in der Programmiersprache C geschrieben, es gibt aber [https://www.gtk.org/language-bindings.php Anbindungen] für eine ganze Reihe weitere Programmiersprache. == weiterführende Links === * [:GTK+:] - Wikiartikel zur GTK+ Bibliothek * [:GTK+/Programmierung:] - Wikiartikel zur Programmierung mit GTK+ * [:Vala:] - Wikiartikel zur Programmiersprache Vala, welche eine enge Bindung an [wikipedia:GObject:] / GTK+ hat * [https://www.gtk.org/ Homepage] {en} des GTK+-Projekts * [https://www.gtk.org/documentation.php Dokumentation] {en} zu GTK+ * [wikipedia:GTK%2B:Wikipedia-Artikel] zu GTK+ = Tk = Tk entstand im Jahr 1991 als GUI-Toolkit für die Programmiersprache [:Tcl:], bietet aber auch [https://wiki.tcl.tk/17264 viele Anbindungen] {en} für andere Programmiersprachen. Außerhalb von Tcl wird Tk noch im [:Python:]-Umfeld recht häufig genutzt, weil Python die Programmierung von grafischen Oberflächen mit Tk direkt unterstützt. Zur Nutzung unter Ubuntu muss dazu das Paket '''python3-tk''' (aus den Main-Quellen) installiert werden. Tk bringt alle notwendigen Elemente und Funktionalitäten zum Erstellen von einfachen und nicht zu komplexen GUIs, für größere Projekte bieten die "größeren" Bibliotheken wie Qt und GTK+ aber mehr Möglichkeiten. Tk steht unter einer [https://www.tcl.tk/software/tcltk/license.html eigenen Lizenz] {en} == weiterführende Links == * [https://www.tcl.tk/ Tcl/Tk] {en} Projektseite * [https://www.tcl.tk/man/tcl8.6/ Dokumentation] {en} zu Tk * [https://docs.python.org/3/library/tk.html Python-Dokumentation] zu Tk-Anbindung * [wikipedia_en:Tk_(software):englischsprachiger Wikipedia-Artikel] zu Tk = wxWidgets = Das wxWidgets Toolkit (bis 2004 als wxWindows bekannt) ist eine GUI-Bibliothek, welche seit 1992 entwickelt wird. Neben Linux werden auch MacOS und Windows als Plattform unterstützt. wxWidgets steht unter der [https://opensource.org/licenses/WXwindows wxWindows Lizenz] {en}, welche die Nutzung für Open Source als auch nicht quelloffene Projekte zulässt. Die aktuelle Version ist 3.x, das ältere 2.8 wird aber ebenfalls noch unterstützt. wxWidgets selbst ist in C++ geschrieben, es gibt aber auch [https://wiki.wxwidgets.org/Bindings Anbindungen] {en} für eine ganze Reihe weiterer Programmiersprachen. == weiterführende Links == * [https://wxwidgets.org Homepage] {en} des Projekts * [https://wxwidgets.org/docs/ Dokumentation] {en} zu wxWidget * [https://wiki.wxwidgets.org/Main_Page Community Wiki] {en} * [wikipedia:WxWidgets:Wikipedia-Artikel] zu wxWidgets = FLTK = FLTK ('''F'''ast '''L'''ight '''T'''ool'''k'''it, gesprochen: "fulltick") ist ein sehr "leichtes" GUI-Toolkit, das alle Elemente zum Erstellen von grafischen Oberflächen bietet, aber ohne extra Klassen für z.B. Strings auskommt. Trotzdem kann man natürlich alles nutzen, was zum Umfang von C++ dazugehört, also auch Strings. Neben Linux unterstützt FLTK auch Windows und MacOS. FLTK erschien das erste Mal im Jahr 1998, steht unter einer Open Source Lizenz und ist in C++ geschrieben. Es gibt aber auch [https://www.fltk.org/wiki.php?LC+P139+TC+Q Anbindungen] {en} für ein paar weitere Programmiersprachen. == weiterführende Links == * [https://www.fltk.org/index.php Homepage] {en} von FLTK * [https://www.fltk.org/documentation.php Dokumentation] {en} der Bibliothek * [https://www.fltk.org/doc-1.1/fluid.html Fluid] {en} - grafischer Editor zum Erstellen von GUIs mit FLTK * [wikipedia:Fast_Light_Toolkit:Wikipedia-Seite] zu FLTK * [http://seriss.com/people/erco/fltk/ Erco's FLTK Cheat Page] {en} - Sehr viele nützliche Programmbeispiele und Tipps. = Electron = Electron ist das jüngste Framework der hier vorgestellten, die erste Version erschien 2013. Auch Electron ist Open Source Software und steht unter der [https://opensource.org/licenses/MIT MIT-Lizenz] {en} Technisch unterscheidet es sich in sofern, als das Electron auf Webtechnologien setzt, die Anwendung wird primär in HTML, CSS und JavaScript erstellt. Auch, wenn im Hintergrund das Webframework [:Node.js:] und die V8-Engine des Webbrowsers [:Chrome:] arbeiten, laufen mit Electron erstellte Programme in einem eigenen Fenster und nicht im Browser. Die bekannteste mit Electron erstellte Anwendung dürfte im Moment der Editor [:Atom:] sein. Neben Linux läuft Electron auch unter Windows und MacOS. == weiterführende Links == * [https://electronjs.org/ Homepage] {de} des Projekts * [https://electronjs.org/docs Dokumentation] {de} * [wikipedia:Electron_(Framework):Wikipedia-Seite] zu Electron = Kivy = Kivy ist eine reine [:Python:]-Bibliothek, welche in der ersten Version 2011 erschien und unter der [https://opensource.org/licenses/MIT MIT] {en} Open Source Lizenz steht. Ein Schwerpunkt von Kivy ist, dass die GUI auch Touch sowie [wikipedia:Multi-touch:Multitouch] Unterstützung bietet und auf möglichst vielen Plattformen inklusive mobilen Geräten läuft. Kivy unterstützt Linux, Windows, MacOS, Android und iOS und bietet damit zusammen mit Qt die breiteste Unterstützung verschiedener Betriebssystem. == weiterführende Links == * [https://kivy.org/#home Homepage] {en} des Kivy-Projekts * [https://kivy.org/doc/stable/gettingstarted/intro.html Dokumentation] {en} * [https://github.com/kivy/kivy/wiki Wiki] {en} mit vielen Beispielen * [wikipedia_en:wiki/Kivy_(framework):englischsprachige Wikipediaseite] zu Kivy = FOX = Bei FOX handelt es sich um ein Toolkit, das in C++ geschrieben ist. Die [http://www.fox-toolkit.org/goals.html Zielsetzung] {en} liegt hier auf möglichst großer Plattformunabhängigkeit, guter Leistung und leichter Erweiterbarkeit. FOX unterstützt außer Linux auch einige andere UNIX-Betriebsysteme, als auch Windows. Anbindungen für andere Programmiersprachen außer C++ gibt es aktuell nicht. == weiterführende Links == * [http://www.fox-toolkit.org/ Homepage] {en} des Projekts * [http://www.fox-toolkit.org/doc.html Dokumenation] {en} zu FOX * [wikipedia_en:Fox_toolkit:englischsprachiger Wikipedia-Artikel] zum FOX Toolkit = Links = * [:Programmierung:] {Übersicht} Übersichtsartikel # tag: Übersicht, Programmierung