ubuntuusers.de

Programmierung

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:

GTK+/logo-gtk.png 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 🇬🇧

Installation

Aus den Paketquellen

Um mit GTK+ 3.x einfache Programme erstellen zu können, genügt es, folgendes Paket zu installieren:

  • libgtk-3-dev

Paketliste zum Kopieren:

sudo apt-get install libgtk-3-dev 

Oder mit apturl installieren, Link: apt://libgtk-3-dev

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

  • libgtk2.0-dev (universe)

Paketliste zum Kopieren:

sudo apt-get install libgtk2.0-dev 

Oder mit apturl installieren, Link: apt://libgtk2.0-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 Glade 🇬🇧 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:

  • devhelp (universe)

  • libgtk-3-doc

Paketliste zum Kopieren:

sudo apt-get install devhelp libgtk-3-doc 

Oder mit apturl installieren, Link: apt://devhelp,libgtk-3-doc

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

  • devhelp (universe)

  • libgtk2.0-doc

Paketliste zum Kopieren:

sudo apt-get install devhelp libgtk2.0-doc 

Oder mit apturl installieren, Link: apt://devhelp,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

 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` 

  • Programmierung - Übersichtsartikel rund ums Programmieren

  • GUI-Toolkits - Übersichtsartikel rund um die verschiedenen graphische Bibliotheken

Diese Revision wurde am 24. Januar 2020 20:16 von noisefloor erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Programmierung, LXDE, Xfce, GNOME