ubuntuusers.deWikiGTK

GTK

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Inhaltsverzeichnis
  1. Installation

./logo-gtk.png GTK {en} (GIMP Toolkit) ist eine freie Komponentenbibliothek, mit der grafische Benutzeroberflächen (GUI) geschrieben werden können.

Die Geschichte von GNOME hängt stark mit GTK+ zusammen. Weil KDE aufgrund der damals unfreien Lizenz von Qt ebenfalls unfrei galt, wurde GNOME ins Leben gerufen, um eine freie Desktop-Umgebung bereitzustellen. Man entschied sich, das vorhandene Toolkit von GIMP – daher der Name GIMP Toolkit – auszubauen. GTK+ war geboren. Am 14. April 1998 kam GTK+ 1.0, seit 11. März 2002 gibt es GTK+ 2.0. Im Februar 2011 ist GTK+ 3.0 erscheinen, das ab Ubuntu 11.10 zum Einsatz kommt. Nur bei gleicher Hauptversionsnummer wird Abwärtskompatibilität garantiert.

Heutzutage basiert nicht nur GNOME auf GTK+, sondern auch andere Desktop-Umgebungen wie Xfce, LXDE und der ROX-Desktop sowie unzählige Einzelprogramme. Wenn von GTK+ die Rede ist, spricht man von der C Bibliothek, mit GTK ist das ganze Framework gemeint.

GTK ist für nahezu jede Plattform verfügbar. Es läuft auf allen unixoiden Systemen (Unix, GNU/Linux, BSD, Mac OS X), auf Windows und auf mobilen Geräten. Eine Portierung gestaltet sich äußerst leicht, da GTK seine Widgets selber zeichnet und somit nur grundlegende Zeichenoperationen angepasst werden müssen. Die Kehrseite ist, dass sich GTK auf einigen Plattformen fremd anfühlt, weil native Widgets nur nachgeahmt und nicht nativ gerendert werden.

Obwohl es in C umgesetzt wurde, ist die Bibliothek hochgradig objektorientiert und unterstützt andere Sprachparadigmen, weil von Anfang an ein Augenmerk auf die Realisierung verschiedenster Sprachanbindungen gelegt wurde. Es existiert eine Vielzahl von Bindings {en}:

Offiziell unterstützte Anbindungen
Sprache Paket Weblink
C++ libgtkmm-2.4 gtkmm {en}
C# gtk-sharp2 Gtk# {en}
Java libjava-gnome-java java-gnome {en}
Python python-gtk2 PyGTK {en}
JavaScript libgjs-dev Gjs {en}
libseed-dev Seed {en}
Perl libgtk2-perl gtk2-perl {en}
Auf C und GObject aufsetzende Sprachen (native GTK+-Unterstützung)
Vala valac Vala {en}
Genie Genie {en}
GOB gob2 GOB {en}
Andere Sprachen
Ada libgtkada2.14.2-dev GtkAda {en}
D GtkD {en}
Erlang gtkNode {en}
erlgtk {en}
Erlang/Gtk {en}
FreeBASIC GTK+tobac2 {en}
FreePascal (Teil der Free Component Library (FCL)) {en}
Guile guile-gnome2-gtk guile-gnome {en}
Haskell libghc6-gtk-dev Gtk2Hs {en}
Lua liblua5.1-gnome-dev LuaGtk2 {en}
OCaml liblablgtk2-ocaml-dev LablGTK {en}
PHP PHP-GTK {en}
R r-cran-rgtk2 RGtk2 {en}
Ruby ruby-gnome2 ruby-gnome2 {en}
Smalltalk libgtk2-gst GNU Smalltalk {en}
Smalltalk YX {en}
Squeak {en}
Tcl Gnocl {en}

Installation

Aus den Paketquellen

Um mit GTK+ 3.x einfache Programme erstellen zu können, reicht es folgendes Paket zu installieren, das ab Ubuntu 11.04 Natty Narwhal vorhanden ist:

  • libgtk-3-dev (universe)

Wiki/Vorlagen/Installbutton/button.png

Für ältere Ubuntu-Versionen gibt es nur GTK+ 2.x:

  • libgtk2.0-dev (universe)

Wiki/Vorlagen/Installbutton/button.png

Benutzung

Editor

Seine Programme kann man wie gewohnt in seinem Lieblingseditor schreiben, oft wird GNU Emacs verwendet. Eine für die Entwicklung unter GNOME spezialisierte Entwicklungsumgebung ist Anjuta.

Designer

Wer seine Oberflächen am liebsten zusammenklickt, kann dies über Glade {en} erledigen, der in einigen IDEs (darunter Anjuta) integriert ist.

Dokumentation

Für die Entwicklung von GTK+-Programmen ist eine gute Dokumentation unerlässlich. Es wird dringendst empfohlen, noch folgende Pakete zu installieren:

  • devhelp (universe)

  • libgtk-3-doc (universe)

Wiki/Vorlagen/Installbutton/button.png

bzw. wenn man noch mit GTK+ 2.x arbeitet:

  • devhelp (universe)

  • libgtk2.0-doc (universe)

Wiki/Vorlagen/Installbutton/button.png

Das erste Programm

Natürlich kann hier keine komplette Einführung in GTK+ und die zahlreichen verwendeten Konzepte gegeben werden. Für das Erlernen von GTK+ sei das unten verlinkte Tutorial hervorgehoben.

helloworld.c

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <gtk/gtk.h>

static void on_button_clicked (GtkWidget *widget, gpointer data)
{
  g_print ("Hello World\n");
}

int main (int argc, char *argv[])
{
  GtkWidget *window, *button;
 
  gtk_init (&argc, &argv);
  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
  gtk_container_set_border_width (GTK_CONTAINER (window), 10);
  button = gtk_button_new_with_label ("Hello World");
  g_signal_connect (button, "clicked", G_CALLBACK (on_button_clicked), NULL);
  gtk_container_add (GTK_CONTAINER (window), button);
  gtk_widget_show_all (window);
  gtk_main ();

  return 0;
}

Übersetzen

Der Compiler benötigt für GTK+ eine ganze Reihe von Optionen. Glücklicherweise lassen sich diese über pkg-config automatisch hinzufügen:

gcc -Wall -g helloworld.c -o helloworld `pkg-config --cflags --libs gtk+-3.0` 

bzw. für GTK+ 2.x:

gcc -Wall -g helloworld.c -o helloworld `pkg-config --cflags --libs gtk+-2.0` 

Diese Revision wurde am 24. Oktober 2011 um 15:23 Uhr von aasche erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet: Programmierung, GNOME, Xfce, LXDE

Passwort vergessen?