Startseite>GTK+: Schicke GUI für RasPi-Programme
Aus Raspberry Pi Geek 06/2017

GTK+: Schicke GUI für RasPi-Programme

© Aleksandra Gigowska, 123RF

Facelifting

Martin Mohr

Mit GTK+ realisieren Sie ohne großen Aufwand effiziente und gefällige grafische Frontends für Ihre Raspberry-Pi-Programme.

Bei ernsthaften Projekten mit dem Raspberry Pi kommt man um das Schreiben einer spezifischen Software nicht herum. Dabei taucht früher oder später unweigerlich die Frage nach einer passenden Oberfläche auf: Was nützt die schönste Anwendung, wenn sie sich nur umständlich über die Kommandozeile bedienen lässt?

Schon aus Performance-Gründen, aber auch um möglichst hardwarenah arbeiten zu können, landen Sie dann unweigerlich bei der Programmierung in C. Erfreulicherweise gibt es hier aus der Linux-Welt nützliche Toolkits, die Sie quasi als Baukasten für grafische Programmoberflächen nutzen können.

Zu den prominentesten Vertretern dieser Riege zählt das aufgrund einer langen Vorgeschichte äußerst ausgereifte Gimp Toolkit oder kurz GTK+ [1], auf dem unter anderem auch die bekannten Desktop-Umgebungen Gnome, LXDE, XFCE und Cinnamon sowie deren Anwendungen basieren.

GTK+

Mit GTK+ [1] lassen sich ohne großen Aufwand komponentenorientierte Benutzeroberflächen erstellen. Es umfasst viele Steuerelemente, mit denen Sie unkompliziert eigene grafische Oberflächen entwickeln. GTK+ liegt für den Raspberry Pi in der Version 3 vor und lässt sich über das Paketmanagement installieren (Listing 1, erste drei Zeilen). Da es auf C basiert, arbeiten die Komponenten im Vergleich zum Java-AWT merklich schneller.

Listing 1

 

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install libgtk-3-dev
$ sudo apt-get install xterm

Als Nächstes installieren Sie das Terminalprogramm Xterm (Listing 1, letzte Zeile), das – wie der Name schon vermuten lässt – für den Einsatz auf X-Servern [2] konzipiert wurde. Ein solcher X-Server sorgt auf unixoiden Betriebssystemen für die Darstellung der grafischen Benutzeroberfläche. Wir benötigen Xterm, um die Verbindung zwischen Raspberry Pi und Desktop-PC zu testen.

TIPP

Unter Windows gibt es keinen X-Server auf dem System. Dort müssen Sie sich mit Tools wie Xming [4] behelfen.

Das Display tunneln

Es gibt mehrere Wege, um die Ausgaben des Raspberry Pi auf den PC umzuleiten. Eine einfache und zugleich sichere Möglichkeit bietet der Aufbau einer SSH-Verbindung zum Raspberry Pi, bei dem Sie direkt eine X-Window-Weiterleitung aktivieren können.

Unter Windows aktivieren Sie dazu auf dem PC in Putty das X11-Forwarding. Unter Linux oder MacOS öffnen Sie ein Terminal und verbinden sich direkt via SSH, wobei Sie den Parameter -X für das Forwarding mit angeben:

$ ssh [email protected]RasPi-IP -X

Nun steht Ihnen eine SSH-Verbindung zur Verfügung, die alle Anfragen an den X-Server des Raspberry Pi auf den PC weiterleitet. Um das zu testen, starten Sie nun Xterm mit dem Kommando xterm &. Auf diese Weise liegt das Terminalfenster im Hintergrund, sodass Sie die SSH-Sitzung weiter verwenden können.

Nach einigen Sekunden öffnet sich das Terminalfenster, in dem Sie wie gewohnt auf dem Raspberry Pi arbeiten. Damit sind alle Voraussetzungen erfüllt, um mit der GTK+-Programmierung auf dem RasPi zu starten.

Hallo Welt

Einer guten alten Tradition folgend beginnen die Programmbeispiele mit einem klassischen “Hallo Welt!” (Listing 2). Als Grundvoraussetzung binden Sie die Header-Datei gtk.h ein, um auf die Konstanten und Funktionen der GTK+-Bibliothek zugreifen zu können (Zeile 2). Zeile 5 initialisiert die GTK+-Bibliothek mit den an die main()-Funktion übergebenen Argumenten. Danach definieren Sie einen Zeiger auf ein Widget (Zeile 6) und erzeugen es auch gleich (Zeile 7).

Die folgenden Funktionen tragen sprechende Namen, die ihre Funktion verdeutlichen: Sie setzen Titel, Größe und Position des Fensters (Zeile 8 bis 10). Die Funktion gtk_widget_show() macht das resultierende Fenster sichtbar (Zeile 11), gtk_main() steuert die komplette Anwendung (Zeile 12). Dabei handelt es sich quasi um eine Endlosschleife, die auf das Auftreten bestimmter Ereignisse wartet.

Listing 2

 

/* HalloWelt.c */
#include <gtk/gtk.h>
int main(int argc, char *argv[]) {
  gtk_init(&argc, &argv);
  GtkWidget *w;
  w = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title(GTK_WINDOW(w), "Hallo Welt");
  gtk_window_set_default_size(GTK_WINDOW(w), 200, 200);
  gtk_window_set_position(GTK_WINDOW(w),GTK_WIN_POS_CENTER);
  gtk_widget_show(w);
  gtk_main();
  return 0;
}

Listing 3 zeigt, wie Sie das Programm kompilieren und starten. Die dabei erscheinenden Warnungen spielen für unser Beispiel keine Rolle, Sie dürfen sie getrost ignorieren. Nach dem Start des Programms erscheint in der Mitte des Bildschirms das Fenster aus Abbildung 1.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland