Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
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 (siehe Tabelle oder Sprachanbindung für GTK+)
Offiziell unterstützte Anbindungen | ||
Sprache | Paket | Weblink |
C++ | libgtkmm-2.4 (GTK+ 2.x) libgtkmm-3.0-1 (GTK+ 3.x) | gtkmm |
C# | gtk-sharp2 (GTK+ 2.x) gtk-sharp3 (GTK+ 3.x) | Gtk# |
Java | libjava-gnome-java | java-gnome |
Python 2 | python-gi | PyGObject |
Python 3 | python3-gi | PyGObject |
JavaScript | libgjs-dev | Gjs |
libseed-dev | Seed | |
Perl | libgtk2-perl (GTK+ 2.x) libgtk3-perl (GTK+ 3.x) | gtk2-perl |
Auf C und GObject aufsetzende Sprachen (native GTK+-Unterstützung) | ||
Vala | valac | Vala |
Genie | Genie | |
GOB | gob2 | GOB |
Andere Sprachen | ||
Ada | libgtkada2.14.2-dev libgtkada2.24.1-dev | GtkAda |
D | GtkD | |
Erlang | gtkNode | |
Erlang/Gtk | ||
FreeBASIC | (Teil des Hauptprogramms) | |
FreePascal | (Teil der Free Component Library (FCL)) | |
Guile | guile-gnome2-gtk | guile-gnome |
Haskell | libghc-gtk-dev | Gtk2Hs |
Lua | lua-lgi-dev | LGI |
liblua5.1-gnome-dev (nur Ubuntu 10.04) | LuaGtk2 | |
OCaml | liblablgtk2-ocaml-dev | LablGTK |
PHP | PHP-GTK | |
R | r-cran-rgtk2 | RGtk2 |
Ruby | ruby-gnome2-dev | ruby-gnome2 |
ffi-gtk | ||
Smalltalk | libgtk2-gst | GNU Smalltalk |
wxWidget | libwxgtk2.6-dev libwxgtk2.8-dev libwxgtk3.0-dev | wxGTK |
Um mit GTK+ 3.x einfache Programme erstellen zu können, genügt es, folgendes Paket zu installieren, das ab Ubuntu 11.04 Natty Narwhal vorhanden ist:
libgtk-3-dev (universe)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install libgtk-3-dev
sudo aptitude install libgtk-3-dev
Für ältere Ubuntu-Versionen gibt es nur GTK+ 2.x:
libgtk2.0-dev (universe)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install libgtk2.0-dev
sudo aptitude install libgtk2.0-dev
Seine Programme kann man wie gewohnt in seinem Lieblingseditor schreiben[2]. Eine für die Entwicklung unter GNOME spezialisierte Entwicklungsumgebung ist Anjuta.
Wer seine Oberflächen am liebsten zusammenklickt, kann dies über Glade erledigen, der in einigen IDEs (darunter Anjuta) integriert ist.
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)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install devhelp libgtk-3-doc
sudo aptitude install devhelp libgtk-3-doc
bzw. wenn man noch mit GTK+ 2.x arbeitet:
devhelp (universe)
libgtk2.0-doc (universe)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install devhelp libgtk2.0-doc
sudo aptitude install devhelp libgtk2.0-doc
Natürlich kann hier keine vollständige Einführung in GTK+ und die zahlreichen verwendeten Konzepte gegeben werden. Für das Erlernen von GTK+ sei das unten verlinkte Tutorial hervorgehoben.
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; } |
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`
Programmierung - Übersichtsartikel rund ums Programmieren
GUI-Toolkits - Übersichtsartikel rund um die verschiedenen graphische Bibliotheken
Quickly - Programme für Ubuntu mit GTK+ und Python entwickeln
GNOME-Tutorials zu GTK+ 3.x mit C, C++, Python, Javascript und Vala
Glade - GUI zum Designen von GTK-Oberflächen
Diese Revision wurde am 2. Mai 2016 16:47 von Germrolf erstellt.