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.

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-1v5 (GTK+ 2.x)
libgtkmm-3.0-1v5 (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 (nur 20.04) PyGObject 🇬🇧
Python 3 python3-gi PyGObject 🇬🇧
JavaScript libgjs-dev Gjs 🇬🇧
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 libgtkada19-dev (20.04)
libgtkada20-dev (22.04)
libgtkada22-dev (23.04 ff.)
GtkAda 🇬🇧
D GtkD 🇬🇧
Erlang gtkNode 🇬🇧
Erlang/Gtk 🇬🇧
FreeBASIC (Teil des Hauptprogramms) 🇬🇧
FreePascal (Teil der Free Component Library (FCL)) 🇬🇧
Guile guile-gnome2-gtk (bis 22.04) guile-gnome 🇬🇧
Haskell libghc-gtk-dev Gtk2Hs 🇬🇧
Lua lua-lgi-dev LGI 🇬🇧
OCaml liblablgtk2-ocaml-dev (bis 23.04) LablGTK 🇬🇧
PHP PHP-GTK 🇬🇧
R r-cran-rgtk2 (nur 20.04) RGtk2 🇬🇧
Ruby ruby-gnome-dev ruby-gnome2 🇬🇧
ffi-gtk 🇬🇧
Smalltalk libgtk2-gst (bis 23.04) GNU Smalltalk 🇬🇧
wxWidget libwxgtk3.0-gtk3-dev (bis 22.04)
libwxgtk3.2-dev (ab 23.04)
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

Befehl zum Installieren der Pakete:

sudo apt-get install libgtk-3-dev 

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

Befehl zum Installieren der Pakete:

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

Befehl zum Installieren der Pakete:

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 10. Dezember 2023 15:41 von fleet_street erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: GNOME, Xfce, LXDE, Programmierung