[[Vorlage(Getestet, general)]] {{{#!vorlage Wissen [:Anwendungen_hinzufügen: Installation von Programmen] [:Editor: Einen Editor öffnen] [:Terminal: Ein Terminal öffnen] [:Compiler: Ein Programm kompilieren] }}} [[Inhaltsverzeichnis()]] [[Bild(GTK+/logo-gtk.png, align=left)]] [: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 [wikipedia_en:List_of_language_bindings_for_GTK+:Sprachanbindung für GTK+]) {{{#!vorlage Tabelle Offiziell unterstützte Anbindungen +++ Sprache Paket Weblink +++ C++ '''libgtkmm-2.4''' (GTK+ 2.x) [[BR]] '''libgtkmm-3.0-1''' (GTK+ 3.x) [http://www.gtkmm.org/ gtkmm] {en} +++ C# '''gtk-sharp2''' (GTK+ 2.x)[[BR]] '''gtk-sharp3''' (GTK+ 3.x) [http://www.mono-project.com/GtkSharp Gtk#] {en} +++ [:Java:] '''libjava-gnome-java''' [http://java-gnome.sourceforge.net/ java-gnome] {en} +++ [:Python: Python 2] '''python-gi''' [gnomeprojects:PyGObject: PyGObject] {en} +++ [:Python: Python 3] '''python3-gi''' [gnomeprojects:PyGObject: PyGObject] {en} +++ <|2>JavaScript '''libgjs-dev''' [gnomeprojects:Gjs: Gjs] {en} +++ '''libseed-dev''' [gnomeprojects:Seed: Seed] {en} +++ [:Perl:] '''libgtk2-perl''' (GTK+ 2.x) [[BR]] '''libgtk3-perl''' (GTK+ 3.x) [http://gtk2-perl.sourceforge.net/ gtk2-perl] {en} +++ +++ Auf C und GObject aufsetzende Sprachen (native GTK+-Unterstützung) +++ [:Vala:] <|2> '''valac''' [gnomeprojects:Vala: Vala] {en} +++ [:Vala:Genie] [gnomeprojects:Genie: Genie] {en} +++ GOB '''gob2''' [http://www.jirka.org/gob.html GOB] {en} +++ +++ Andere Sprachen +++ Ada '''libgtkada2.14.2-dev''' [[BR]] '''libgtkada2.24.1-dev''' [http://libre.adacore.com/libre/tools/gtkada/ GtkAda] {en} +++ D [http://www.dsource.org/projects/gtkd GtkD] {en} +++ <|2>[:Erlang:] [https://github.com/massemanet/gtknode/ gtkNode] {en} +++ [http://sourceforge.net/projects/erlgtk/ Erlang/Gtk] {en} +++ FreeBASIC [http://www.freebasic-portal.de/ (Teil des Hauptprogramms)] {en} +++ FreePascal [http://www.freepascal.org (Teil der ''Free Component Library (FCL)'')] {en} +++ Guile '''guile-gnome2-gtk''' [http://www.gnu.org/software/guile-gnome/ guile-gnome] {en} +++ Haskell '''libghc-gtk-dev''' [https://wiki.haskell.org/Gtk2Hs Gtk2Hs] {en} +++ <|2>[:Lua:] '''lua-lgi-dev''' [github:pavouk/lgi:LGI] {en} +++ '''liblua5.1-gnome-dev''' (nur Ubuntu 10.04) [http://luaforge.net/projects/lua-gtk LuaGtk2] {en} +++ OCaml '''liblablgtk2-ocaml-dev''' [http://lablgtk.forge.ocamlcore.org/ LablGTK] {en} +++ [:PHP:] [http://gtk.php.net/ PHP-GTK] {en} +++ R '''r-cran-rgtk2''' [http://cran.r-project.org/web/packages/RGtk2/index.html RGtk2] {en} +++ <|2>[:Ruby:] '''ruby-gnome2-dev''' [http://ruby-gnome2.sourceforge.jp/ ruby-gnome2] {en} +++ [github:mvz/gir_ffi-gtk:ffi-gtk] {en} +++ Smalltalk '''libgtk2-gst''' [http://smalltalk.gnu.org/ GNU Smalltalk] {en} +++ [:GUI-Toolkits#wxWidgets:wxWidget] '''libwxgtk2.6-dev''' [[BR]] '''libwxgtk2.8-dev''' [[BR]] '''libwxgtk3.0-dev''' [https://www.wxwidgets.org/docs/faq/gtk/ wxGTK] {en} }}} = Installation = == Aus den Paketquellen == Um mit GTK+ 3.x einfache Programme erstellen zu können, genügt es, folgendes Paket zu installieren: {{{#!vorlage Paketinstallation libgtk-3-dev }}} Für ältere Ubuntu-Versionen gibt es nur GTK+ 2.x: {{{#!vorlage Paketinstallation libgtk2.0-dev, universe }}} = Benutzung = == Editor == Seine Programme kann man wie gewohnt in seinem Lieblingseditor schreiben[2]. == Designer == Wer seine Oberflächen am liebsten zusammenklickt, kann dies über [http://glade.gnome.org/ Glade] {en} erledigen, der in einigen IDEs 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: {{{#!vorlage Paketinstallation devhelp, universe libgtk-3-doc }}} bzw. wenn man noch mit GTK+ 2.x arbeitet: {{{#!vorlage Paketinstallation devhelp, universe libgtk2.0-doc }}} = Das erste Programm = 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. == helloworld.c == {{{#!code c #include 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: {{{#!vorlage Befehl gcc -Wall -g helloworld.c -o helloworld `pkg-config --cflags --libs gtk+-3.0` }}} bzw. für GTK+ 2.x: {{{#!vorlage Befehl gcc -Wall -g helloworld.c -o helloworld `pkg-config --cflags --libs gtk+-2.0` }}} = Links = == Interne Links == * [:Programmierung:] {Übersicht} - Übersichtsartikel rund ums Programmieren * [:GUI-Toolkits:] {Übersicht} - Übersichtsartikel rund um die verschiedenen graphische Bibliotheken == Externe Links == * [http://www.gtk.org/ Webseite] {en} * [http://developer.gnome.org/gtk3/stable/ GTK+ 3.x Referenz-Dokumentation] {en} * [http://developer.gnome.org/gtk-tutorial/stable/ GTK+ 2.x Tutorial] {en} * [http://developer.gnome.org/ GNOME-Tutorials zu GTK+ 3.x mit C, C++, Python, Javascript und Vala] {en} * [http://de.wikibooks.org/wiki/GTK_mit_Builder Wikibook zu GTK+ 3.x mit C] {de} * [http://python-gtk-3-tutorial.readthedocs.org/en/latest/ Python GTK+ 3 Tutorial] {en} * [http://vimeo.com/25185245 Screencast-Serie zu GTK+ 3.x mit Python] {en} * [http://glade.gnome.org/ Glade] {en} - GUI zum Designen von GTK-Oberflächen #tag: GNOME, Xfce, Programmierung, LXDE