Προγραμματισμός με GTK ΠΑΡΟΥΣΙΑΣΗ ΣΤΑ ΠΛΑΙΣΙΑ ΤΟΥ ΜΑΘΗΜΑΤΟΣ «ΕΠΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ-ΜΗΧΑΝΗΣ» ΑΛΕΞΑΝΔΡΟΣ Κ. ΓΙΔΑΡΑΚΟΣ

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΑΥΤΟΝΟΜΟΙ ΠΡΑΚΤΟΡΕΣ ΝΑΟ - ΜΟΥΣΙΚΟΣ Καρατζαφέρης Ευστάθιος Αλέξανδρος.
Advertisements

Το αλφαριθμητικό (string)
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Graphical User Interfaces (GUI) SWING.
Κληρονομικότητα. Εισαγωγή  Κληρονομικότητα (Inheritance) καλείται ο μηχανισμός με τον οποίο μία νέα κλάση που ονομάζεται παράγωγη (derived class) δημιουργείται.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ PHP. Τι θα μάθουμε;  Να καταλάβουμε τι είναι η PHP και πώς δουλεύουν τα PHP scripts  Τι χρειάζεται για να ξεκινήσουμε με την PHP  Να.
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 1ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 5 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 11.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΕΠΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ – ΜΗΧΑΝΗΣ Εαρινό Εξάμηνο 2007 Παρουσίαση Εργαλείου Ανάπτυξης JBuilder Τσουρού Σταυρούλα, ΑΜ 708 Μαδεμλής Ιωάννης, ΑΜ 669.
Message Passing Interface (MPI)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
TEMPLATES STANDARD TEMPLATE LIBRARY ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ C Evangelos Theodoridis.
24/11/2003Message Passing Interface (MPI)1 Αθήνα, Νοέμβριος 2003 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
22/11/2004Message Passing Interface (MPI)1 Αθήνα, Νοέμβριος 2004 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
Databases & Qt Μανούσης Πέτρος ΑΜ: 862
Αγγίσταλης Κωνσταντίνος Α.Μ 739
Μήτρες (templates)  Μία μήτρα είναι ένα κομμάτι κώδικα που περιέχει παραμέτρους οι οποίες δέχονται ως τιμές τύπους δεδομένων.  Είναι ένας μηχανισμός.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 11: Intro to Applets Εβδομάδα 11: Εισαγωγή στα Applets.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 10: Graphical User Interfaces Εβδομάδα 10: Εισαγωγή στα Γραφικά Περιβάλλοντα.
A’ ΛΥΚΕΙΟΥ ΛΥΚΕΙΟ ΚΟΚΚΙΝΟΧΩΡΙΩΝ Δημήτρης Μαυροβουνιώτης
Νήματα Οι διεργασίες έχουν τα παρακάτω συστατικά:
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
ΕΝΟΤΗΤΑ 2 – Κεφάλαιο 6: Το Γραφικό Περιβάλλον Επικοινωνίας (Γ.Π.Ε.)
1 Ολυμπιάδα Πληροφορικής Μάθημα 7. 2 Στόχοι μαθήματος Δημιουργία συναρτήσεων από το χρήστη Δομή προγράμματος με συναρτήσεις Συναρτήσεις και παράμετροι.
GTK - ΕΙΣΑΓΩΓΗ ΦΩΤΗΣ ΣΙΤΑΡΑΣ A.M: 1117.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Graphical User Interfaces (GUI) SWING.
ΣΥΝΑΡΤΗΣΕΙΣ.
ΗΥ302 Διδακτική της Πληροφορικής Η γλώσσα προγραμματισμού LOGO Writer Ομάδα Εργασία: Αλεβίζου Βασιλική (Α.Μ.:1029) Κοφφινά Ιωάννα (Α.Μ.:1035) Τριανταφυλλίδου.
Message Passing Interface (MPI) Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων Αθήνα, Δεκέμβριος 2002.
ΑΝΑΠΤΥΞΗ ΤΑΞΙΝΟΜΗΤΗ ΗΛΕΚΤΡΟΝΙΚΗΣ ΑΛΛΗΛΟΓΡΑΦΙΑΣ ΜΑΛΕΖΑ ΣΟΦΙΑ ΑΕΜ:765.
ΕΠΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ-ΜΗΧΑΝΗΣ Παρουσίαση της LessTif  Μαραγκός ΘοδωρήςΑ.Μ. 557  Καρκάνης ΗλίαςΑ.Μ. 539.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
Διδακτική της Πληροφορικής ΗΥ302 Εργασία :Παρουσίαση σχολικού βιβλίου Γ’ Λυκείου Τεχνολογικής Κατεύθυνσης «Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον»
XERTE TUTORIAL - ΣΗΜΕΙΩΣΕΙΣ ΕΡΓΑΣΤΗΡΙΟΥ ΘΜΕΛ ΣΤ. ΔΗΜΗΤΡΙΑΔΗΣ Xerte Interaction – Διάδραση Θεωρίες Μάθησης & Εκπαιδευτικό Λογισμικό Σημειώσεις Εργαστηρίου.
Παρουσίαση της Motif Αναστάσιος Κρυσταλλίδης Α.Μ.: 776 Δημήτρης Μπαμπαλίκης Α.Μ.: 941 Επικοινωνία Ανθρώπου-Μηχανής.
Εισαγωγή στη .net Visual C++
ΜΑΘΗΜΑ: ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Τμ.
Templates Standard Template Library (STL) Exceptions Μεταπτυχιακό Πρόγραμμα Σπουδών, Τμήμα Εφαρμοσμένης Πληροφορικής.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
Applets Εκμεταλλεύονται τo γραφικό υπόβαθρο που παρέχουν οι browsers, έχοντας έτσι τη δυνατότητα προβολής γραφικών και τη δυνατότητα υλοποίησης ενός γραφικού.
Κεφάλαιο 10 – Υποπρογράμματα
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Πολυμορφισμός.
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
Παρουσίαση Glade Νίκος Δεληγιάννης Α.Μ.: Τι είναι το Glade; Εφαρμογή για την αυτοματοποίηση της σχεδίασης ενός γραφικού περιβάλλοντος χρήστη (GUI).
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
Applets Εκτελούνται από τον appletviewer και από Java enabled web browsers Εκμεταλλεύονται τo γραφικό υπόβαθρο που παρέχουν οι browsers, έχοντας έτσι τη.
ΕΙΣΑΓΩΓΙΚΟ ΦΡΟΝΤΙΣΤΗΡΙΟ Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία.
Βασικά στοιχεία της Java
Κεφάλαιο 3 Τύποι Δεδομένων - Τελεστές. Πρωτογενείς τύποι δεδομένων: int, float, double, chars ΤύποςΌνομαΜέγεθος byte 8-bit signed, short 16-bit.
Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Μαθηματικών “Θεωρητική Πληροφορική & Θεωρία Συστημάτων και Ελέγχου” Ανάπτυξη διαδραστικού περιβάλλοντος (GUI)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 6: Πίνακες και Παράμετροι στην main. Διδάσκων: Νικόλαος Θ Λιόλιος,
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Εισαγωγή στη C# Μαρίνος Θεμιστοκλέους Ανδρούτσου 150 Γραφείο 206 Τηλ Ώρες Γραφείου: Τετάρτη 5-6 μμ.
ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ Αντικειμενοστραφής προγραμματισμός Web Site: ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ.
Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα:
Προγραμματισμός κινητών συσκευών
Κλάσεις και αντικείμενα
Εργασία στο μάθημα «Προγραμματισμός ΙΙ»
ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε.
ΣΥΝΟΠΤΙΚΗ ΠΑΡΟΥΣΙΑΣΗ POWERPOINT
Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών
Web Services στη C# Εργαστήριο 3
Tkinter Γραφικά στην Python.
Εισαγωγή στη Java (Μέρος Α’)
Φόρμες Φόρμες χρησιμοποιούνται για να δημιουργήσουμε ένα φιλικό περιβάλλον για την διαχείριση των δεδομένων της βάσης. Επίσης δίνεται η δυνατότητα δημιουργίας.
Λειτουργικά Συστήματα
Μεταγράφημα παρουσίασης:

Προγραμματισμός με GTK ΠΑΡΟΥΣΙΑΣΗ ΣΤΑ ΠΛΑΙΣΙΑ ΤΟΥ ΜΑΘΗΜΑΤΟΣ «ΕΠΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ-ΜΗΧΑΝΗΣ» ΑΛΕΞΑΝΔΡΟΣ Κ. ΓΙΔΑΡΑΚΟΣ

Δημιουργία GUI με υψηλού επιπέδου Widget Toolkits Μερικές γενικές αρχές 1. ΔιεπαφήΣύνολο αντικειμένων (Widgets), συνδεδεμένα μεταξύ τους με σχέσεις ιεραρχίας, εν είδει «δένδρου» 2. Κάποια Widgets υποστηρίζουν αλληλεπίδραση με τον χρήστη (ετικέτες, κουμπιά, check boxes)‏ 3. Άλλα λειτουργούν ως δοχεία (containers) που ομαδοποιούν τα υπόλοιπα Widgets (παράθυρα, panels)‏ 4. Τα περιεχόμενα του «δένδρου» των Widgets καθώς και οι ιδιότητές τους μπορούν να μεταβάλλονται κατά το χρόνο εκτέλεσης 5. Χειρισμός των γεγονότων χρήστη (user events)Βιβλιοθήκη 6. Ενέργεια που ακολουθεί την ανίχνευση ενός event Ευθύνη του κυρίως κώδικα της εφαρμογής (back-end)‏

Και ποια η χρησιμότητά τους; Τα περισσότερα σύγχρονα Λ/Σ προσφέρουν επαρκή μεν, δύσχρηστα δε Native APIs για τη δημιουργία GUI. Τα Toolkits, προσθέτοντας ένα επιπλέον επίπεδο αφαίρεσης σε αυτόν τον τομέα, επιτρέπουν: 1. Ευκολότερη συγγραφή κώδικα 2. Ταχύτερη ανάπτυξη της εφαρμογήςR.A.D. Φιλοσοφία 3. Δημιουργία πολύπλοκων και εντυπωσιακών γραφικών διεπαφών, με την υλοποίηση χαρακτηριστικών που δεν παρέχονται από τα Native APIs 4. Δημιουργία ενοποιημένων σε εμφάνιση και συμπεριφορά, περιβαλλόντων χρήσηςΟμαλότερη καμπύλη εκμάθησης για το χρήστη 5. Περισσότερο μεταφερτό κώδικα σε διαφορετικές πλατφόρμες

Και ποια η χρησιμότητά τους; Χωρίς επίπεδα αφαίρεσης και αυτοματισμούς στον προγραμματισμό όπως αυτά που προσφέρουν τα Toolkits, τα γραφικά περιβάλλοντα που χρησιμοποιούμε άραγε θα ήταν τόσο εμφανίσιμα όπως στο παράδειγμα (GNOME) και θα ολοκληρωνόταν η ανάπτυξή τους σε λογικό χρόνο...;

Στα ενδότερα του GTK (1)‏ #include static gint delete_event_cb(GtkWidget* w, GdkEventAny* e, gpointer data); static void button_click_cb(GtkWidget* w, gpointer data); int main(int argc, char* argv[]) { GtkWidget* window; GtkWidget* button; GtkWidget* label; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); button = gtk_button_new(); label = gtk_label_new("Hello, World!"); gtk_container_add(GTK_CONTAINER(button), label); gtk_container_add(GTK_CONTAINER(window), button); gtk_window_set_title(GTK_WINDOW(window), "Hello"); gtk_container_set_border_width(GTK_CONTAINER(button), 10); gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(delete_event_cb), NULL); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(button_click_cb), label); gtk_widget_show_all(window); gtk_main(); return 0; } static gint delete_event_cb(GtkWidget* window, GdkEventAny* e, gpointer data) { gtk_main_quit(); return FALSE; } static void button_click_cb(GtkWidget* w, gpointer data) { GtkWidget* label; gchar* text; gchar* tmp; label = GTK_WIDGET(data); gtk_label_get(GTK_LABEL(label), &text); tmp = g_strdup(text); g_strreverse(tmp); gtk_label_set_text(GTK_LABEL(label), tmp); g_free(tmp); } Ένα «μικρό»* HelloWorld :p * Στην Πληροφορική, όπως και στη ζωή, έννοιες όπως «απλό», «μικρό», «γρήγορο» κλπ, είναι πάντα σχετικές...! :)‏

Στα ενδότερα του GTK (2)‏ Και όμως, είναι απλό! 1.Περισσότερο χρησιμοποιούμενη γλώσσα προγραμματισμού η C (υπάρχουν bindings και για πολλές άλλες δημοφιλείς γλώσσες)‏ 2.Με βασικές γνώσεις CΕύκολη κατανόηση της λογικής πίσω από ένα πρόγραμμα σε GTK, ακόμη και χωρίς πρότερη επαφή με αυτό 3.Η συγγραφή GTK κώδικα είναι συστηματική διαδικασία περιλαμβάνει πολλές επαναληπτικές διαδικασίες Η άνεση στη χρήση είναι θέμα αρχικής εξοικείωσης 4.Παρέχεται στην εγκατάσταση πλήρης τεκμηρίωση. Ελεύθερη πρόσβαση σε πλήθος οδηγών και παραδειγμάτων στο Διαδίκτυο

Στα ενδότερα του GTK (3)‏ Σημεία - κλειδιά 1. #include Εκεί δηλώνονται μεταβλητές, συναρτήσεις και δομές που χρησιμοποιούνται σε GTK προγράμματα 2. gtk_init(&argc, &argv); Αρχικοποιεί για χρήση τη βιβλιοθήκη, τους εξ ορισμού χειριστές σημάτων (signal handlers). Ελέγχει για τυχόν GTK-specific ορίσματα που δόθηκαν κατά την εκκίνηση του προγράμματος 3. window = gtk_window_new(GTK_WINDOW_TOPLEVEL); button = gtk_button_new(); label = gtk_label_new("Hello, World!"); (έχουν δηλωθεί προηγουμένως αντίστοιχα τα: GtkWidget* window; GtkWidget* button; GtkWidget* label; )‏

Αντικειμενοστρέφεια σε C;;; 1.Υλοποίηση custom συστήματος αντικειμένωνΑντικειμενοστρεφή χαρακτηριστικά (κληρονομικότητα-εικονικές συναρτήσεις)‏ 2.Προσανατολισμός στο χρόνο εκτέλεσηςΕυκολότερη ανάπτυξη bindings και οπτικών εργαλείων για το GTK σε managed (interpreted) γλώσσες 3.Βασικά αντικείμενα τα widgets: Υποκλάσεις της βασικής κλάσης GtkWidget 4.Αναφορά σε widgets με δείκτη GtkWidget* Δημιουργία/αρχικοποίηση gtk_ _new()‏ Επιστρέφει δείκτη τύπου GtkWidget* προς το νέο αντικείμενο 5.Χειρισμός αντικειμένων με χρήση των μεθόδων του Ξεκινούν με το όνομα του τύπου στον οποίον επενεργούν και δέχονται ως πρώτο όρισμα δείκτη προς αντικείμενο τέτοιου τύπου. 6.Π.χ: gtk_container_add(GTK_CONTAINER(button), label); Πρώτο όρισμα ένας δείκτης GtkContainer* Η μακροεντολή GTK_CONTAINER() εκτελεί casting του GtkWidget*, απαραίτητο αφού η C δεν αντιλαμβάνεται εγγενώς σχέσεις κληρονομικότητας.

HelloWorld revisited... Έχοντας τα προηγούμενα υπ'όψιν μας, μπορούμε πιο άνετα να επανεξετάσουμε το παράδειγμα HelloWorld: window = gtk_window_new(GTK_WINDOW_TOPLEVEL); button = gtk_button_new(); label = gtk_label_new("Hello, World!"); gtk_container_add(GTK_CONTAINER(button), label); gtk_container_add(GTK_CONTAINER(window), button); gtk_window_set_title(GTK_WINDOW(window), "Hello"); gtk_container_set_border_width(GTK_CONTAINER(button), 10); Αυτό το τμήμα κώδικα δημιουργεί ένα παράθυρο, ένα κουμπί και μία ετικέτα (γραμμή κειμένου). Τοποθετεί την ετικέτα εντός του κουμπιού και το κουμπί εντός του παραθύρου. Στη συνέχεια, ορίζει τον τίτλο του παραθύρου και προσθέτει ένα μικρό περίγραμμα γύρω από το κουμπί:

Signals 1.Ενέργεια χρήστη επάνω σε ένα widgetΑντίδραση από μέρους της εφαρμογής. 2.Αυτό επιτυγχάνεται με τα signalsΣήματα που εκπέμπει ένα widget (γενικώς κάθε instance κλάσης GtkObject) όταν αλληλεπιδρούμε με αυτό με συγκεκριμένο τρόπο 3.Συνδέουμε στο σήμα μία callback συνάρτησηΑναλαμβάνει να δώσει την κατάλληλη απάντηση 4.Με χρήση της gtk_signal_connect : gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(delete_event_cb), NULL); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(button_click_cb), label); 5.Ορίσματα:Το αντικείμενο που θα παρακολουθείται, το σήμα και η callback συνάρτηση τα οποία συνδεόνται και ένα user_data όρισμα. 6. gtk_widget_show_all(window); Εμφανίζει το παράθυρο (καλώντας αναδρομικά μία gtk_widget_show στο αντικείμενο window και όλα τα περιεχόμενά του)‏ gtk_main(); Φέρνει το πρόγραμμα σε κατάσταση αναμονής για είσοδο από το χρήστη.

Σχεδιασμός του interface 1.Ιδιομορφία του GTK στη σχεδιάση των layouts: Δεν είναι free-form 2.Δημιουργούμε containers που θα δέχονται ως περιεχόμενα τα διάφορα widgets που θα χρησιμοποιήσουμε 3.Abstract βασική κλάση η GtkContainer 4.Παράδειγματα υποκλάσεων: GtkVBox (κάθετη διάταξη των «παιδιών»)‏ GtkTable («παιδιά» σε μορφή πίνακα)‏

Πηγές 1.GTK+ Official Website: 2.GTK+ 2.0 Official Tutorial: 3.Widget toolkits - Wikipedia: 4.GTK+ - Wikipedia: (GTK logo)‏ 5.GTK+ / Gnome Application Development: