GUI Programmierung mit GTK



Ähnliche Dokumente
Informatik 1 Tutorial

Informatik I Tutorial

Anleitung über den Umgang mit Schildern

Grafische Benutzeroberfläche mit Glade und Python

Der Kalender im ipad

teischl.com Software Design & Services e.u. office@teischl.com

Benutzername: Passwort: Nun befindest du dich in einem Bereich, von wo aus du Berichte über Ereignisse schreiben kannst und Fotos dazugeben kannst.

Bilder zum Upload verkleinern

GUI Programmierung mit GTK Teil 3

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Mediator 9 - Lernprogramm

Fernseher Bild Bildschirm Computergeräte. Festplatte CD DVD Eingabegerät. Computertasten Mauszeiger Cursor rechten Maustaste

Erstellen von x-y-diagrammen in OpenOffice.calc

Professionelle Seminare im Bereich MS-Office

Erstellen einer digitalen Signatur für Adobe-Formulare

Das Leitbild vom Verein WIR

Hex Datei mit Atmel Studio 6 erstellen

Bauteilattribute als Sachdaten anzeigen

Dazu stellen Sie den Cursor in die Zeile, aus der eine Überschrift werden soll, und klicken auf die gewünschte Überschrift.

Datei Erweiterungen Anzeigen!

Wichtige Information zur Verwendung von CS-TING Version 9 für Microsoft Word 2000 (und höher)

Installation OMNIKEY 3121 USB

Erklärung zu den Internet-Seiten von

Artikel Schnittstelle über CSV

HANDOUT VON: EIGENES SSL-ZERTIFIKAT FÜR DEN WHS. Copyright 2011 by s.winkler all rights reserved!

KVIrc installieren (win) i. KVIrc installieren (win)

Leichte-Sprache-Bilder

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

UserManual. Handbuch zur Konfiguration einer FRITZ!Box. Autor: Version: Hansruedi Steiner 2.0, November 2014

Informatik Kurs Simulation. Hilfe für den Consideo Modeler

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Bedienungsanleitung. Matthias Haasler. Version 0.4. für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof

Menü auf zwei Module verteilt (Joomla 3.4.0)

Drucken von Webseiten Eine Anleitung, Version 1.0

LISP. Eine Einführung

Übung - Datensicherung und Wiederherstellung in Windows 7

Typo3 - Inhalte. 1. Gestaltung des Inhaltsbereichs. 2. Seitenunterteilung einfügen

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Abwesenheitsnotiz im Exchangeserver 2010

! " # $ " % & Nicki Wruck worldwidewruck

Wie räume ich mein Profil unter Windows 7 auf?

Um die Patientenverwaltung von Sesam zu nutzen, muss man die Patienten natürlich zuerst in die Kartei eintragen.

Viele Bilder auf der FA-Homepage

Was muss gesichert werden? -Ihre angelegten Listen und Ihre angelegten Schläge.

Was meinen die Leute eigentlich mit: Grexit?

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Pfötchenhoffung e.v. Tier Manager

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista

Eine kleine Anleitung zum Kurs Homepage selbst erstellen

Inhaltverzeichnis 1 Einführung Zugang zu den Unifr Servern Zugang zu den Druckern Nützliche Links... 6

Tutorial -

Outlook Erstellen einer aus einer HTML - Vorlage INHALT

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Eigene Dokumente, Fotos, Bilder etc. sichern

Windows7 32/64bit Installationsanleitung der ROBO-PRO-Software

Qt-Projekte mit Visual Studio 2005

Laufwerke, Ordner, Dateien: 1. Erklärung der Begriffe

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Java: Vererbung. Teil 3: super()

Unperfekthaus-Tutorial: Wordpress

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Den Fehler session error bei der Kalenderanmeldung beheben:

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

Installation und Inbetriebnahme von Microsoft Visual C Express

SRH - Kurzinformation

Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht:

Karten-Freischaltung mit dem UNLOCK MANAGER

Festplatte defragmentieren Internetspuren und temporäre Dateien löschen

Digital signierte Rechnungen mit ProSaldo.net

Anzeige von eingescannten Rechnungen

Version 0.3. Installation von MinGW und Eclipse CDT

SFTP SCP - Synology Wiki

Was man mit dem Computer alles machen kann

Einen Wiederherstellungspunktes erstellen & Rechner mit Hilfe eines Wiederherstellungspunktes zu einem früheren Zeitpunkt wieder herstellen

Computeria Solothurn

Hinweise zum Übungsblatt Formatierung von Text:

OP-LOG

Datensicherung. Beschreibung der Datensicherung

Anwendungsbeispiele Buchhaltung

AutoCAD Dienstprogramm zur Lizenzübertragung

Diese Anleitung zeigt dir, wie du eine Einladung mit Microsoft Word gestalten kannst.

Übung - Datensicherung und Wiederherstellung in Windows Vista

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Microsoft Update Windows Update

Anleitung zur Erstbenutzung von Ventrilo Seite 1 von 1

Daten fu r Navigator Mobile (ipad)

1. Loggen Sie sich mit Ihrem Benutzernamen in den Hosting-Manager (Confixx) auf Ihrer entsprechenden AREA ein. Automatische Wordpress Installation

Sichere Anleitung Zertifikate / Schlüssel für Kunden der Sparkasse Germersheim-Kandel. Sichere . der

Drägerware.ZMS/FLORIX Hessen

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

Fotogalerie mit PWGallery in Joomla (3.4.0) erstellen

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Installation der Konfigurationsdateien für alle Windows-Versionen bis einschließlich Microsoft Windows 7

my.ohm Content Services Autorenansicht Rechte

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Family Safety (Kinderschutz) einrichten unter Windows 8

Dateien mit Hilfe des Dateimanagers vom USB-Stick kopieren und auf der Festplatte speichern

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

TYPO3 Super Admin Handbuch

Transkript:

LinuxFocus article number 295 http://linuxfocus.org GUI Programmierung mit GTK by Özcan Güngör <ozcangungor(at)netscape.net> About the author: Ich benutze Linux seit 1997. Freiheit, Flexibilität, Open Source. Diese Eigenschaften mag ich. Translated to English by: Özcan Güngör <ozcangungor(at)netscape.net> Abstract: In dieser Artikelserie werden wir lernen, wie man Programme mit graphischen Benutzerschnittstellen (Graphical User Interfaces, GUIs) unter Verwendung von GTK schreibt. Ich habe keine Ahnung, wie lange die Serie dauern wird. Um diese Artikel zu verstehen, solltest du folgendes über die Programmiersprache C wissen: Variablen Funktionen Zeiger Was ist GTK? GTK (GIMP Toolkit) ist eine Bibliothek, um graphische Benutzerschnittstellen zu erzeugen. Sie steht unter der GPL. Damit kannst du Open Source, freie oder kommerzielle Programme schreiben. Die Bibliothek heißt GIMP Toolkit, weil sie ursprünglich geschrieben wurde, um GIMP (GNU Image Manipulation Program, GNU Bildbearbeitungsprogramm) zu entwickeln. Die Autoren von GTK sind: Peter Mattis Spencer Kimball Josh MacDonald GTK ist eine objekt orientierte Benutzerschnittstelle für Applikationen. Obwohl es in C geschrieben ist, verwendet es die Idee von Klassen und Callback Funktionen. 1/6

Kompilieren Um GTK Programme zu kompilieren, mußt Du gcc sagen, was die GTK Bibliotheken sind und wo sie liegen. Das gtk config Kommando weiß das. # gtk config cflags libs Die Ausgabe dieses Befehls sieht so ähnlich aus (abhängig vom System): I/opt/gnome/include/gtk 1.2 I/opt/gnome/include/glib 1.2 I/opt/gnome/lib/glib /include I/usr/X11R6/include L/opt/gnome/lib L/usr/X11R6/lib lgtk lgdk rdynamic lgmodule lglib ldl l Xext lx11 lm Die Erklärungen dieser Parameter sind: l Bibliothek: Sucht nach einer Bibliothek der Form libbibliothek in den definierten Pfaden. L Pfad: Fügt einen Pfad hinzu, in dem Bibliotheken gesucht werden. I Pfad: Fügt einen Pfad hinzu, in dem Header Dateien gesucht werden, die im Programm benutzt werden. Um ein GTK Programm namens hello.c zu kompilieren, kann man folgenden Befehl benutzen: gcc o hello hello.c `gtk config cflags libs` Der String nach dem Parameter o ist der Name des kompilierten Programms. Ein erstes Programm Es wird angenommen, daß GTK auf deinem System installiert ist. Die neuesten Versionen von GTK können auf ftp.gtk.org gefunden werden. Auf zu unserem ersten Programm. Es erzeugt ein 200x200 Pixel großes, leeres Fenster. int main( int argc, char *argv[] ) GtkWidget *window; gtk_widget_show (window); GtkWidget ist ein Variablentyp, um verschiedene Komponenten wie Fenster, Buttons, Labels etc. zu definieren. In diesem Beispiel wird so ein Fenster erzeugt: 2/6

GtkWidget *window; void gtk_init(int *argc,char ***argv) initiiert das Toolkit und bekommt die Parameter aus der Kommandozeile. Diese Funktion muß nach der Definition der Komponenten aufgerufen werden. GtkWidget *gtk_window_new(gtkwindowtype windowtype) erzeugt ein neues Fenster. windowtype kann sein: GTK_WINDOW_TOPLEVEL GTK_WINDOW_DIALOG GTK_WINDOW_POPUP void gtk_widget_show(gtkwidget *widget) wird benutzt, um die Komponente in einem Fenster erscheinen zu lassen. Nachdem eine Komponente definiert ist und die Attribute geändert wurden, muß diese Funktion aufgerufen werden. void gtk_main(void) bereitet die Fenster und alle Komponenten darauf vor, auf dem Bildschirm zu erscheinen. Diese Funktion muß am Ende von GTK Programmen aufgerufen werden. Wir wollen nun einige Fenstereigenschaften wie Titel, Größe und Position ändern... void gtk_window_set_title(gtkwindow *window,const gchar *title) benutzt man zum Setzen oder Ändern des Titels von window. Der erste Parameter dieser Funktion ist vom Typ GtkWindow. Beim Kompilieren werden wir davor gewarnt. Obwohl das kompilierte Programm läuft, ist es besser, das zu korrigieren. GTK_WINDOW(GtkWidget *widget) wird stattdessen genommen. Der zweite Parameter title ist vom Typ gchar. gchar ist in der Bibliothek glib definiert und dasselbe wie der Typ char. void gtk_window_set_default_size(gtkwindow *window, gint width, gint height) setzt die Größe von window. Wie gchar ist gint in der glib definiert und dasselbe wie int. Die Funktion void gtk_window_set_position(gtkwindow *window, GtkWindowPosition position) legt die Position von window fest. position kann sein: GTK_WIN_POS_NONE GTK_WIN_POS_CENTER GTK_WIN_POS_MOUSE GTK_WIN_POS_CENTER_ALWAYS Hier ist ein Beispiel: int main( int argc, char *argv[] ) GtkWidget *window; 3/6

gtk_window_set_title(gtk_window(window),"ýlk Program"); gtk_window_set_position(gtk_window(window),gtk_win_pos_center); gtk_window_set_default_size(gtk_window(window),300,300); gtk_widget_show (window); Signale und Ereignisse In GUIs mußt du Maus und Tastatur benutzen können, etwa um auf einen Button zu klicken. Dafür verwendet man folgende GTK Funktion: guint gtk_signal_connect_object(gtkobject *object,const gchar *name,gtksignalfu nc func,gtkobject *slot_object); object ist die Komponente, die Signale aussendet. Wenn Du z.b. wissen willst, ob ein Button gedrückt wurde, wird object dieser Button sein. name ist der Name des Ereignisses und kann sein: event button_press_event button_release_event motion_notify_event delete_event destroy_event expose_event key_press_event key_release_event enter_notify_event leave_notify_event configure_event focus_in_event focus_out_event map_event unmap_event property_notify_event selection_clear_event selection_request_event selection_notify_event proximity_in_event proximity_out_event drag_begin_event drag_request_event drag_end_event drop_enter_event drop_leave_event drop_data_available_event other_event 4/6

func ist der Name der Funktion, die aufgerufen wird, sobald das Ereignis eintritt. Hier ist ein Beispiel: void close( GtkWidget *widget,gpointer *data) gtk_main_quit(); int main( int argc,char *argv[] ) GtkWidget *window; gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (close), NULL); gtk_widget_show (window); Die Funktion gtk_signal_connect (GTK_OBJECT (window), "destroy",gtk_signal_func (close), NULL) achtet auf das Fenster schließen Event. Wenn versucht wird, das Fenster zu schließen, wird die Funktion close gerufen. Diese ruft wiederum gtk_main_quit() auf, und das Programm endet. Mit den Details über Signale und Ereignisse setzen wir uns später auseinander... Ein gewöhnlicher Button Normale Buttons lösen für gewöhnlich bestimmte Dinge aus, wenn auf sie geklickt wird. In der GTK Bibliothek gibt es zwei Arten, Buttons zu erzeugen: 1. GtkWidget* gtk_button_new (void); 2. GtkWidget* gtk_button_new_with_label (const gchar *label); Die erste Funktion erzeugt einen Button ohne eine Beschriftung, die zweite hingegen erzeugt einen Button mit der Beschriftung label. Nun benutzen wir eine neue Funktion: void gtk_container_add(gtkcontainer *container,gtkwidget *widget) Damit können wir einen Button in einem Fenster erscheinen lassen; oder allgemeiner gesagt, können wir eine Komponente in einen Container legen. Im nächsten Beispiel handelt es sich bei dem Container um ein Fenster und bei der hinzuzufügenden Komponente um einen Button. Einige andere Container werden wir zu einem 5/6

späteren Zeitpunkt kennenlernen. Das Wichtigste an einem Button ist es, zu wissen, ob er gedrückt wird oder nicht. Wieder wird zu diesem Zweck die Funktion gtk_signal_connect benutzt. Dadurch wird eine andere Funktion gerufen, welche die Funktionalität hinter dem Button realisiert. Hier das Beispiel: void close( GtkWidget *widget,gpointer *data) gtk_main_quit(); void clicked(gtkwidget *widget,gpointer *data) g_print("button Clicked\n"); int main( int argc,char *argv[] ) GtkWidget *window,*button; gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (close), NULL); button=gtk_button_new_with_label("button"); gtk_container_add(gtk_container(window),button); gtk_signal_connect(gtk_object(button),"clicked", GTK_SIGNAL_FUNC(clicked),NULL); gtk_widget_show(button); gtk_widget_show(window); Webpages maintained by the LinuxFocus Editor team Özcan Güngör "some rights reserved" see linuxfocus.org/license/ http://www.linuxfocus.org Translation information: tr > : Özcan Güngör <ozcangungor(at)netscape.net> tr > en: Özcan Güngör <ozcangungor(at)netscape.net> en > de: Viktor Horvath <ViktorHorvath(at)gmx.net> 2005 01 11, generated by lfparser_pdf version 2.51 6/6