GUI

GUI ist die Abkürzung für (engl.) „Graphical User Interface“ und bedeutet übersetzt „grafische Benutzeroberfläche“. Sie dient als Schnittstelle zwischen Benutzer und Programm und hat in vielen Bereichen die Textkonsolen oder Terminals abgelöst. Konsolen sind jedoch immer noch mehr oder weniger in aktuellen Betriebssystemen enthalten (Terminal bei Linux/Unix, cmd.exe unter Windows).
Dabei werden grafische Oberflächen auf Grund ihrer einfachen Bedienbarkeit der Kommandozeile meist vorgezogen. Für unerfahrene Benutzer entfällt das Suchen nach passenden Kommandozeilenbefehlen und außerdem sind Programme dadurch optisch ansprechender. Vor allem unter Linux und Unixsystemen nimmt die Konsole jedoch immer noch einen sehr großen Stellenwert ein, da man mit etwas Erfahrung deutlich schneller arbeiten kann, als wenn man sich durch Menüs klicken muss. Jetzt wollen wir uns aber einmal mit den verschiedenen Elementen einer grafischen Schnittstelle beschäftigen:

Teilgebiete

Desktop-Umgebungen

Als Desktop-Umgebungen werden grafische Benutzeroberflächen zur Verwendung des Betriebssystems bezeichnet. Fälschlicherweise werden sie oft selbst „Betriebssystem“ genannt. Sie können sowohl fest in das Betriebssystem integriert (z.B. Windows) als auch frei wählbar sein (z.B. Linux mit Gnome, KDE, LXDE, usw.).
Ihr Aussehen ist größtenteils anpassbar. Unter Linux und Unix kann man außerdem mehrere Desktop-Umgebungen parallel installieren und während des Betriebs zwischen ihnen wechseln.

Ubuntu mit Gnome 2.26 Kubuntu mit KDE 4.2
Windows XP Windows Vista Aero

Steuerelemente (Widgets)

Die Funktionen des GUIs werden durch Steuerelemente (auch „Widgets“ genannt) aufgerufen. Durch Eingabegeräte können ihre Eigenschaften verändert werden. Widgets können beliebig miteinander zu komplexen Menüs kombiniert werden.

Button
Slider und Spinbox
Textbox, Checkboxen und Buttons

Beispiele für Widgets:

  • Fenster
  • Buttons
  • DropDown-Menüs
  • Symbolleisten
  • Checkboxen
  • Scrollbars
  • Fortschrittsbalken
  • Textboxen
  • Slider
  • Spinboxen
  • Radiobutton

Eingabe

Zur Kommunikation des Benutzers mit der Oberfläche werden Eingabegeräte benötigt. Am häufigsten werden dafür Maus und Tastatur verwendet. Durch einfache Mausklicks oder das Drücken von Tasten können Widgets im GUI ausgewählt oder verändert werden.
Es gibt aber auch andere Eingabegeräte, die z.B. auf Berührung (Touchscreen), Bewegung (z.B. Wiimote, EyeToy) oder Geräusche (Sprachsteuerung) reagieren. In Spielen werden oft Joysticks oder Gamepads verwendet.

GUI-Programmierung

Durch Verwendung externer Bibliotheken kann man auch für eigene Anwendungen Benutzeroberflächen bereitstellen. Einerseits kann man dafür direkt die bereitgestellten Bibliotheken des jeweiligen Betriebssystems verwenden oder besser eine der vielen plattformunabhängigen Bibliotheken. Solche Bibliotheken basieren oft auf Callbacks (Funktionen, die aufgerufen werden, wenn ein Widget verwendet wird).

Beispiele zu bekannten systemunabhängigen GUI-Bibliotheken und Programmen von denen sie verwendet werden:

GTK+ (C)

Das GIMP-Toolkit ist eine freie Bibliothek (unter der LGPL) , mit der ihr grafische Benutzeroberflächen (GUI) in der Programmiersprache C erstellen könnt. Sie wurde anfangs für das freie Bildbearbeitungsprogramm GIMP geschrieben. Allerdings sind auch die GUIs vieler anderer Programme mit GTK+ erstellt worden, zum Beispiel die freien Desktopumgebungen GNOME oder Xfce, sowie viele andere Anwendungen. Für GTK+ existieren auch noch Bindings (Anbindungen) für einige andere Programmiersprache, wie C++ (gtkmm), Java (java-gnome), Python (PyGTK), C# (GTK#, im Mono-Projekt) und mehr.

  • Wird verwendet von: Gnome, LXDE, GIMP, OpenOffice

gtkmm (C++)

Gtkmm ist die C++ Anbindung für GTK+. Im Gegensatz zum originalen GTK+ besitzt GTKmm eine Klassenhierarchie, die die Entwicklung und Weiterentwicklung neuer Widgets stark vereinfacht. Die Typensicherheit von GTKmm erleichtert die Programmierarbeit enorm. Bei Einsatz der Gtkmm Bibliotheken werden bereits zur Kompilierung Fehler im Quelltext erkannt was bei der C-Version (GTK+) im jetzigen Entwicklungsstadium nicht der Fall ist und deshalb mögliche Programmierfehler erst durch undefiniertes Verhalten auftreten können. In GTK+ kommen ausschließlich Zeiger zur Anwendung. Als C++-Programmierer sollte von Zeigern nur in Ausnahmefällen Gebrauch gemacht werden, stattdessen sollte vermehrt auf Membervariablen zurückgegrifen werden um die Speicherverwaltung zu vereinfachen.

Die Gtkmm Bibliotheken sind primär für Unix,- und Linux-Derivate entwickelt worden, die GUI-Programme können aber auch auf Mac OS X und Microsoft Windows ohne größeren Aufwand portiert werden.

Gtkmm ist unter der LGPL frei verwendbar.

Qt (C++)

Qt (sprich „cute“) ist eine vom norwegischen Unternehmen Trolltech, welches 2008 von Nokia aufgekauft wurde, entwickelte C++ Klassenbibliothek mit der man unter anderem grafische Benutzeroberflächen erstellen kann. Zum Beispiel wurde die Desktopumgebung KDE mit Qt geschrieben, wie auch viele Programme, die für KDE entwickelt worden sind. Qt steht unter einem dualen Lizenzsystem, einerseits einer kommerziellen Lizenz und andererseits der LGPL, welche eine Nutzung sowohl in Opensource-Programmen als auch in kommerziellen Programmen erlaubt. Änderungen an der Bibliothek selbst müssen auch weitergegeben werden.
Die Bibliothek zeichnet sich auch durch ihre Plattformunabhängigkeit aus. Auch für Qt gibt es Bindings an andere Programmiersprachen, unter anderem Python, Ruby, C# und Java.

  • Wird verwendet von: KDE, GoogleEarth, VLC, Virtualbox

wxWidgets (C++)

wxWidgets, früher bekannt als wxWindows, ist eine C++ Bibliothek, mit der ihr GUIs erstellen könnt. Dabei versucht wxWidget sich möglichst als Wrapper für die native GUI des Betriebssystems darzustellen, d.h. wxWidgets benutzt keine eigene Benutzeroberfläche, sondern benutzt die des Betriebssystems, auf dem das Programm kompiliert und ausgeführt wird. wxWidgets ist eine quelloffene Bibliothek und steht unter einer leicht modifizierten LGPL-Lizenz die es erlaubt, die Bibliothek für proprietäre und freie Anwendungen benutzen zu können. Beispiele für Programme, die mit wxWidgets erstellt worden, sind der Audioeditor Audacity oder die freie Entwicklungsumgebung Code::Blocks. Auch für wxWidgets existieren Bindings an andere Programmiersprachen, darunter Python (wxPython), Perl (wxPerl) und Ruby (wxRuby).

  • Wird verwendet von: Code::Blocks, Audadcity, Bittorrent
  • Noch kein wirkliches wxWidgets-Tutorial

Zeichnen von GUIs

GUIs können aber auch mit Zeichen-Tools erstellt und in ein Programm eingebunden werden. Qt zum Beispiel liefert dafür das Programm „Qt-Designer“ mit.

Qt-Designer

GUI-Designer


Diskussion