
Έχω python μάθηση για μια στιγμή τώρα με κάποια επιτυχία. Έχω ακόμη καταφέρει να δημιουργήσει ένα ή δύο (απλό) προγράμματα χρησιμοποιώντας PyGTK + Glade.


Το θέμα είναι: Δεν είμαι σίγουρος αν ο καλύτερος τρόπος για να χρησιμοποιήσετε το GTK με python είναι με την οικοδόμηση των διεπαφών με χρήση Glade.


Αναρωτιόμουν αν οι πιο έμπειροι αυτοί ανάμεσά μας (θυμηθείτε, είμαι απλώς ένας αρχάριος) θα μπορούσε να επισημάνει τα οφέλη και προειδοποιήσεις από τη χρήση Glade σε αντίθεση με τη δημιουργία πάντα στο ίδιο κώδικα (υποθέτοντας ότι η εκμάθηση τις σωστές συνδέσεις gtk δεν θα ακριβώς είναι το πρόβλημα).

 
Glade ή δεν ξέφωτο: Ποιος είναι ο καλύτερος τρόπος για να χρησιμοποιήσετε PyGTK;
================================================================================



Θα έλεγα ότι αυτό εξαρτάται από: αν διαπιστώσετε ότι η χρήση Glade μπορείτε να χτίσετε τις εφαρμογές που θέλετε ή πρέπει να κάνει ό, τι αυτό είναι απολύτως εντάξει. Αν όμως θέλετε πραγματικά να μάθετε πώς λειτουργεί το GTK ή έχετε κάποιες μη-τυπικές απαιτήσεις UI θα **πρέπει** να σκάψουν σε GTK εσωτερικά (που δεν είναι τόσο περίπλοκη).


Προσωπικά είμαι συνήθως περίπου 5 λεπτά σε μια πλούσια client όταν χρειάζομαι κάποια λειτουργία ή προσαρμογή που είναι απλά αδύνατο μέσα από έναν σχεδιαστή, όπως Glade ή [Stetic](http://www.mono-project.com/Stetic) . Ίσως είναι ακριβώς εγώ. Παρ 'όλα αυτά εξακολουθεί να είναι χρήσιμο για μένα για να ξεκινήσει η σχεδίαση παράθυρο χρησιμοποιώντας ένα γραφικό εργαλείο.


Η σύστασή μου: αν κάνει πλούσιους πελάτες που χρησιμοποιούν το GTK πρόκειται να είναι ένα σημαντικό μέρος της δουλειάς σας / χόμπι στη συνέχεια να μάθουν GTK, καθώς από τη στιγμή που **θα** χρειαστεί να γράψω αυτό το κώδικα μέρα.


PS Προσωπικά βρίσκω [Stetic](http://www.mono-project.com/Stetic) να είναι ανώτερη από Glade για το έργο του σχεδιασμού, αν και λίγο πιο ασταθής.

 

Χρήση GtkBuilder αντί Glade, είναι ενσωματωμένη στο ίδιο Gtk αντί για μια ξεχωριστή βιβλιοθήκη.


Το κύριο πλεονέκτημα του Glade είναι ότι είναι πολύ, πολύ πιο εύκολο να δημιουργήσετε το περιβάλλον. Είναι λίγο περισσότερη δουλειά για να συνδεθείτε χειριστές σήμα, αλλά ποτέ δεν έχω την αίσθηση ότι τα θέματα πολύ.

 

Glade είναι πολύ χρήσιμο για τη δημιουργία διεπαφών, αυτό σημαίνει ότι μπορείτε εύκολα να αλλάξετε το γραφικό περιβάλλον, χωρίς να κάνει πολύ κωδικοποίησης. Θα διαπιστώσετε ότι αν θέλετε να κάνετε κάτι χρήσιμο (π.χ. οικοδομήσουμε μια treeview) θα πρέπει να εξοικειωθείτε με τα διάφορα τμήματα της τεκμηρίωσης GTK - στην πράξη να βρουν ένα καλό φροντιστήριο / παραδείγματα.

 

Ξεκίνησα τη χρήση ξέφωτο, αλλά σύντομα μετακόμισε στο ακριβώς κάνουν τα πάντα στον κώδικα. Glade είναι ωραίο για απλά πράγματα, και αυτό είναι καλό όταν μαθαίνετε πώς GTK διοργανώνει τα widgets (πώς είναι συσκευασμένα τα πράγματα, κλπ). Κατασκευάζοντας τα πάντα στον κώδικα, όμως, έχετε πολύ μεγαλύτερη ευελιξία. Πλέον, δεν έχετε την εξάρτηση ξέφωτο.

 

Συνήθως ξεκινήσει με Glade μέχρι να φτάσει σε ένα σημείο όπου δεν έχει τα χαρακτηριστικά που χρειάζεστε, για παράδειγμα δημιουργώντας έναν οδηγό. Όσο είμαι με τη χρήση των κατ 'αποκοπή widgets που παρέχει Glade, πραγματικά δεν υπάρχει λόγος να παραδώσει τον κωδικό του GUI.


Το πιο άνετα θα γίνει με το πώς Glade μορφοποιεί τον κωδικό, το καλύτερο χέρι-κωδικοποίηση μου γίνεται. Για να μην αναφέρουμε, είναι πραγματικά εύκολο στη χρήση Glade για να κάνει το υποκείμενο πλαίσιο, ώστε να μην χρειάζεται να ανησυχείτε για όλες τις προετοιμασίες.

 

Για γρήγορη και απλή οθόνες μπορώ να χρησιμοποιήσω Glade. Αλλά για κάτι που χρειάζεται λεπτότερα επίπεδα του ελέγχου, θα δημιουργήσετε μια προσαρμοσμένη τάξεις για αυτό που πραγματικά χρειάζεται (αυτό είναι σημαντικό, γιατί είναι πολύ εύκολο να παρασυρθούμε με γενικεύσεις).


Με skinny εφαρμογές ειδικά μαθήματα, μπορώ να αλλάξω γρήγορα την εμφάνιση και την αίσθηση εφαρμογή ευρύ από ένα μόνο σημείο. Μάλλον, όπως η χρήση CSS για να διατηρήσετε τη συνέπεια για τις ιστοσελίδες.

 

Θα ήθελα να συστήσω χρησιμοποιώντας Glade για την ταχεία ανάπτυξη, αλλά όχι για τη μάθηση. Γιατί; γιατί μερικές φορές θα χρειαστεί να συντονίσετε κάποια widgets, ώστε να λειτουργούν όπως θέλουν να να εργαστούν, και αν πραγματικά δεν ξέρω / κατανόηση των ιδιοτήτων χαρακτηριστικά του κάθε widget, τότε θα είναι σε προβλήματα.

 

Αν είστε γράφει ένα παραδοσιακό εφαρμογή GUI που επαναχρησιμοποιεί πολλά τυπικά στοιχεία του GTK + (κουμπιά, ετικέτες, συσκευασίες κ.λπ.) θα ήθελα προσωπικά να πάει με το Glade + Ακτινίδια (ένα πλαίσιο ευκολία για τη δημιουργία εφαρμογών GTK + GUI). 


Το ενιαίο μεγαλύτερο πλεονέκτημα από τη χρήση Glade είναι ότι μειώνει σημαντικά Κώδικας διάταξης / συσκευασίας. Εδώ είναι μια εξαιρετικά απλή παράδειγμα που δείχνει ήδη τα προβλήματα με το χέρι, για τον ένα GUI (χωρίς τη χρήση βοηθητικών λειτουργιών):



```
container = gtk.HBox()
label = gtk.Label(str="test")
container.add(label)

```

Για περισσότερα παραδείγματα ρίξτε μια [ματιά εδώ](http://marcin.af.gliwice.pl/if-then-else-20071113232114) . Ακόμα κι αν είστε γράφει ένα περίπλοκο προσαρμοσμένη widget μπορείτε πάντα να δημιουργήσετε ένα σύμβολο κράτησης θέσης στο Glade και να αντικαταστήσετε ότι μετά την συγκεκριμενοποίηση.


Δεν πρέπει να είναι πολύ μεγάλη στιγμή για την ομάδα του Glade να κυκλοφορήσει μια νέα έκδοση του σχεδιαστή (3.6.0). Αυτή η νέα έκδοση θα προσθέσει υποστήριξη για GtkBuilder, η οποία αντικαθιστά libglade (την πραγματική βιβλιοθήκη που μετατρέπει τα αρχεία XML Glade σε ένα δέντρο widget). Ο νέος σχεδιαστής Glade και προσθέτει μια ακόμη φορά τη στήριξη για τον καθορισμό καταλόγων (σετ widgets) στην Python, ώστε να μπορείτε εύκολα να προσθέσετε το δικό σας custom widgets.

 

Προσωπικά θα ήθελα να συστήσω κωδικοποίησης έξω αντί να χρησιμοποιούν Glade. Μαθαίνω ακόμα python και PyGTK, αλλά θα πω ότι γράφοντας το UI με το χέρι μου έδωσε πολλές γνώσεις για το πώς λειτουργούν τα πράγματα κάτω από το καπό.


Μόλις έχετε μάθει Θα έλεγα να δώσει ξέφωτο, ή άλλους σχεδιαστές UI μια δοκιμή, αλλά σίγουρα να μάθουν πώς να το κάνουμε το «σκληρό» τρόπο πρώτα.

 

Πρώτον, αρχίζουν να βάλει αυτό στην προοπτική.


Θα πρέπει να χρησιμοποιείτε GTK. Αυτό είναι μια τεράστια βιβλιοθήκη C που χτίστηκε το 1993, χρησιμοποιώντας τις καλύτερες παραδόσεις της δεκαετίας του 1970 κωδικοποίηση στυλ. Χτίστηκε για να βοηθήσει στην εφαρμογή του GIMP, έναν ανταγωνιστή Photoshop wanna-be με γκάφες διεπαφή χρήστη του μύθου. Ένα τυπικό πεδίο GUI μπορεί να έχει σαράντα ή περισσότερες παραμέτρους, ως επί το πλείστον επαναλαμβανόμενες, έχοντας getters και setters. Θα υπάρχει πόνος.


Το ίδιο το GTK διαχειρίζεται ένα πλήρες δυναμικό σύστημα τύπου C χρησιμοποιώντας GObject. Αυτό καθιστά τον εντοπισμό σφαλμάτων μια ιδιαίτερη χαρά που απαιτεί το χέρι με τα πόδια μέσα από συστοιχίες δείκτες σε μεθόδους πλήρους γενικών καταλόγων επιχείρημα με σιωπηρή κληρονομιά. Θα πρέπει επίσης να άλμα μέσα από βιβλιοθήκες Πάνγκο, όταν τουλάχιστον το αυτό, για παράδειγμα, χρησιμοποιώντας ένα σταθερό Πάνγκο για το πού αναγράφεται σε μια ετικέτα το ελλειπτικό πάει, όταν η σελίδα είναι μικρή. Αναμείνετε περισσότερο πόνο.


Μέχρι τώρα, είστε πιθανώς υποσχόμενοι να τυλίξει όλους GTK αλληλεπιδράσεις σας σε μια αρχιτεκτονική Model-View-Controller ειδικά για την αίτησή σας. Αυτό είναι καλό.


Χρησιμοποιώντας το Glade, ή GtkBuilder, ή Stetic, θα βοηθήσει κοραλλιογενείς το τεράστιο πρόβλημα σύνδεσης των σαράντα παραμέτρων σε μια συνάρτηση. Glade παρέχει ένα βασικό δομικό GUI να drag and drop συστατικών μαζί. Οι παράμετροι και κληρονομικών παράμετροι είναι κάπως διαχωρίζονται έξω. Η έξοδος του Glade είναι .glade αρχείο XML το οποίο στη συνέχεια θα διαβάζονται, αποδίδουν callbacks ( «χειριστές σήμα») για να ίδιο όνομα λειτουργίες, και το ερώτημα ή να ενημερώσετε την έκδοση στη μνήμη της XML για να πάρει widgets που μπορείτε στη συνέχεια να χρησιμοποιήσετε PyGTK να χειραγωγήσουν. η ίδια Glade είναι μια τρεμουλιαστή και δεν συντηρείται σωστά. 


Χρησιμοποιώντας PyGTK σας δίνει ενοχλητικά λεπτόκοκκο ελέγχου προκειμένου να οικοδομηθεί GUI σας. Αυτό θα είναι λεπτομερές, κωδικό αντιγραφή και επικόλληση. Κάθε χαρακτηριστικό θα είναι μια ξεχωριστή κλήση της συνάρτησης. Το χαρακτηριστικό setter δεν επιστρέφει τίποτα, οπότε σύνδεσης των κλήσεων είναι έξω από το θέμα. Συνήθως, IDE σας θα δώσει μόνο ελάχιστη βοήθεια σε ό, τι σημαίνει λειτουργίες και θα αναφέρεται συνεχώς σε DevHelp ή κάποιο άλλο εργαλείο.


Κάποιος θα σχεδόν αναμένουν GTK GUIs ήταν γραφτό να αποτύχει.

 

Μπορείτε να χρησιμοποιήσετε ξέφωτο-2 για το σχεδιασμό και τη χρήση [glade2py.py](https://gist.github.com/shellexy/0ad0864b7e4e99a0a95d) για να παράγει το καθαρό κώδικα PyGTK, το χρησιμοποιούν pygtkcompat να υποστηρίξει gtk3

 