[[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++ [packages:libgtkmm-2.4-1v5:] (GTK+ 2.x) [[BR]] [packages:libgtkmm-3.0-1v5:] (GTK+ 3.x) [http://www.gtkmm.org/ gtkmm] {en} +++ C# [packages:gtk-sharp2:] (GTK+ 2.x) [[BR]] [packages:gtk-sharp3:] (GTK+ 3.x) [http://www.mono-project.com/GtkSharp Gtk#] {en} +++ [:Java:] [packages:libjava-gnome-java:] [http://java-gnome.sourceforge.net/ java-gnome] {en} +++ [:Python: Python 2] [packages:python-gi:] (nur [:20.04:]) [gnomeprojects:PyGObject: PyGObject] {en} +++ [:Python: Python 3] [packages:python3-gi:] [gnomeprojects:PyGObject: PyGObject] {en} +++ <|2>JavaScript [packages:libgjs-dev:] [https://gitlab.gnome.org/GNOME/gjs/ Gjs] {en} +++ [gnomeprojects:Seed: Seed] {en} +++ [:Perl:] [packages:libgtk2-perl:] (GTK+ 2.x) [[BR]] [packages: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> [packages:valac:] [gnomeprojects:Vala: Vala] {en} +++ [:Vala:Genie] [gnomeprojects:Genie: Genie] {en} +++ GOB [packages:gob2:] [http://www.jirka.org/gob.html GOB] {en} +++ +++ Andere Sprachen +++ Ada [packages:libgtkada19-dev:] ([:20.04:]) [[BR]] [packages:libgtkada20-dev:] ([:22.04:]) [[BR]] [packages:libgtkada22-dev:] ([:23.04:] ff.) [github:AdaCore/gtkada: GtkAda] {en} +++ D [github:gtkd-developers/GtkD: GtkD] {en} +++ <|2>[:Erlang:] [github:/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 [packages:guile-gnome2-gtk:] (bis [:22.04:]) [http://www.gnu.org/software/guile-gnome/ guile-gnome] {en} +++ Haskell [packages:libghc-gtk-dev:] [https://wiki.haskell.org/Gtk2Hs Gtk2Hs] {en} +++ [:Lua:] [packages:lua-lgi-dev:] [github:pavouk/lgi:LGI] {en} +++ OCaml [packages:liblablgtk2-ocaml-dev:] (bis 23.04) [http://lablgtk.forge.ocamlcore.org/ LablGTK] {en} +++ [:PHP:] [http://gtk.php.net/ PHP-GTK] {en} +++ R [packages:r-cran-rgtk2:] (nur [:20.04:]) [http://cran.r-project.org/web/packages/RGtk2/index.html RGtk2] {en} +++ <|2>[:Ruby:] [packages:ruby-gnome-dev:] [http://ruby-gnome2.sourceforge.jp/ ruby-gnome2] {en} +++ [github:mvz/gir_ffi-gtk:ffi-gtk] {en} +++ Smalltalk [packages:libgtk2-gst:] (bis 23.04) [http://smalltalk.gnu.org/ GNU Smalltalk] {en} +++ [:GUI-Toolkits#wxWidgets:wxWidget] [packages:libwxgtk3.0-gtk3-dev:] (bis [:22.04:])[[BR]] [packages:libwxgtk3.2-dev:] (ab [:23.04:]) [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 }}} = 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