Θα κάνουμε ένα μικρό πρόγραμμα με το PyGTK 3.0 που λειτουργεί επίσης για το PyGTK 3.4. Αυτό το μικρό GUI θα σας διδάξει πώς να διαιρέσετε ένα πρόγραμμα σε δύο ή περισσότερα αρχεία.
Μπορείτε να επισκεφθείτε το σεμινάριο του Sebastian Pölsterl για το νέο PyGTK 3, εδώ είναι το νέο σεμινάριο, αφήνω τον σύνδεσμο:
http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html
Αυτό είναι το ιστολόγιο του Sebastian.
Μία κριτική για αυτό το σεμινάριο από τον Sebastian είναι ότι δεν διδάσκει πώς να χωρίζει ένα πρόγραμμα σε μέρη ή σε πολλά αρχεία, θα ήταν καλό αν έδειχνε ένα παράδειγμα για το πώς να το κάνει με το PyGTK 3.
Όλα τα μεγάλα και περίπλοκα προγράμματα χωρίζονται σε πολλά αρχεία και τα αρχεία τοποθετούνται ακόμη και σε άλλους καταλόγους, δηλαδή βρίσκονται σε διαφορετικούς φακέλους.
Ας ξεκινήσουμε με το μικρό παράδειγμα:
Εδώ είναι ο κωδικός γραφής σε ένα μόνο αρχείο που ονομάζεται gui.py. Ανοίγουμε το πρόγραμμα επεξεργασίας κειμένου Gedit ή το πρόγραμμα επεξεργασίας που χρησιμοποιούμε περισσότερο, αντιγράφουμε τον παρακάτω κώδικα και τον αποθηκεύουμε ως gui.py
από gi.repository import Gtk class gui (): def on_open_clicked (self, button): print "\" Open \ "κουμπί" κλικ "def on_close_clicked (self, button): print" Κλείσιμο εφαρμογής "Gtk.main_quit () def __init__ (self): self.window = Gtk.Window () self.window.connect ('delete-event', Gtk.main_quit) self.box = Gtk.Box () self.window.add (self.box) εαυτό. κουμπί = Gtk.Button (label = 'Open') self.button.connect ("clicked", self.on_open_clicked) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button ( label = 'Κλείσιμο') self.button.connect ("clicked", self.on_close_clicked) self.box.pack_start (self.button, True, True, 0) self.window.show_all () Gtk.main () if __name__ == '__main__': gui = gui ()
def on_open_clicked (self, button): έγινε κλικ στο κουμπί "\" Open \ "print"
Είναι μια λειτουργία που ενεργοποιείται στο τερματικό όταν κάνουμε κλικ στο κουμπί ανοίγματος. Το σήμα ενεργοποίησης είναι:
self.button.connect ("clicked", self.on_open_clicked) def on_close_clicked (self, button): εκτύπωση "Κλείσιμο εφαρμογής" Gtk.main_quit ()
Είναι μια λειτουργία που ενεργοποιείται όταν κάνουμε κλικ στο κουμπί κλεισίματος.
κλείστε το πρόγραμμα που εκτελούμε.
το σήμα για ενεργοποίηση είναι
self.button.connect ("clicked", self.on_close_clicked) από gi.repository import Gtk ### καλούμε βιβλιοθήκες PyGTK ### class gui (): ### ορισμός κλάσης που ονομάζεται gui είναι η κύρια κλάση # ##
Δήλωση Widgets: ένα widget είναι ένα πρόγραμμα που προκαθορίζεται από τις βιβλιοθήκες γραφικών διεπαφών που χρησιμοποιούμε. Για παράδειγμα, ένα widget είναι ένα κουμπί, ένα παράθυρο, ένα πλαίσιο κ.λπ. Αυτά είναι τα widget που δηλώνουμε στο πρόγραμμά μας.
self.window = Gtk.Window () ### παράθυρο ### self.box = Gtk.Box () ### πλαίσιο #### self.button = Gtk.Button (label = 'Open') ### # ανοιχτό κουμπί #### self.button = Gtk. Button (label = 'Close') #### κουμπί κλεισίματος #### self.window.add (self.box) #### το πλαίσιο περιέχεται στο το παράθυρο που ονομάζεται παράθυρο #### self.box.pack_start (self.button, True, True, 0) ##### το κουμπί περιέχεται στο πλαίσιο που ονομάζεται πλαίσιο ### self.window.show_all () ## # δείχνουμε ολόκληρο το παράθυρο ### gui = gui () ### δημιουργία αντικειμένου gui ####
Τοποθετούμε το πρόγραμμά μας σε ένα φάκελο που ονομάζεται απλό στην περίπτωσή μας στην επιφάνεια εργασίας
Ανοίγουμε το φάκελο με το τερματικό, στην περίπτωσή μου χρησιμοποιώ το Nemo από το Linux Mint 14.
Για να μεταγλωττίσουμε τοποθετήσαμε το τερματικό python gui.py
δείτε την εικόνα.
Τώρα μπορούμε να δούμε το μικρό μας πρόγραμμα ή το νέο widget που δημιουργήθηκε με τις βιβλιοθήκες PyGTK 3
Είναι ένα απλό παράθυρο με δύο κουμπιά.
Τώρα χωρίζουμε το πρόγραμμα σε τρία μέρη και μετά αφήνω τον κώδικα των τριών αρχείων.
Πρώτο αρχείο gui.py
από gi.repository εισαγωγή Gtk από καταστροφή εισαγωγής καταστροφή από io εισαγωγή io κλάση gui (καταστροφή, io): def __init __ (self): self.window = Gtk.Window () self.window.connect ('delete-event', Gtk .main_quit) self.box = Gtk.Box () self.window.add (self.box) self.button = Gtk.Button (label = 'Open') self.button.connect ("clicked", self.on_open_clicked self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button (label = 'Close') self.button.connect ("clicked", self.on_close_clicked) self.box.pack_start (self.button, True, True, 0) self.window.show_all () Gtk.main () if __name__ == '__main__': gui = gui ()
Δεύτερο αρχείο io.py
class io: def on_open_clicked (self, button): έγινε κλικ στο κουμπί "\" Open \ "print"
Τρίτο αρχείο destr.py
από gi.repository εισαγωγή Gtk class καταστροφή: def on_close_clicked (αυτο, κουμπί): εκτύπωση "Κλείσιμο εφαρμογής" Gtk.main_quit ()
Στην περίπτωσή μας τοποθετούμε τα τρία αρχεία στον ίδιο φάκελο, ο φάκελος ονομάζεται απλός διαιρεμένος.
Για να μεταγλωττίσετε τα τρία αρχεία. Ανοίγουμε το φάκελο με το τερματικό και απλώς το βάζουμε πίσω στο τερματικό
python gui.py
Τροποποιήσεις στον κώδικα gui.py
από καταστροφή εισαγωγής καταστροφή ### δήλωση για εισαγωγή του αρχείου μας ru.py ### από io εισαγωγή io ### δήλωση για εισαγωγή του αρχείου μας io.py ### class gui (καταστροφή, io): #### στην τάξη main προσθέτουμε τις υποκατηγορίες καταστροφή και io ####
Μπορείτε να δείτε ότι η πρόταση
def on_open_clicked (self, button): έγινε κλικ στο κουμπί "\" Open \ "print"
Δεν είναι στο gui.py, είναι στο αρχείο io.py
Πρόταση
def on_close_clicked (αυτο, κουμπί):
εκτύπωση "Κλείσιμο εφαρμογής"
Gtk.main_quit ()
βρίσκεται στο αρχείο destr.py
Έτσι μπορούμε να χωρίσουμε ένα πρόγραμμα σε πολλά αρχεία που βρίσκονται σε διαφορετικούς καταλόγους ταυτόχρονα.
Από την άλλη πλευρά, το Python είναι ένας πυλώνας ελεύθερου λογισμικού και είναι προσαρμοσμένος να λειτουργεί με το GTK 3.6 /3.8, το όνομά του είναι PyGTK. Η προσαρμογή του Python για το KDE ονομάζεται PyQT.
Το Python είναι προσαρμοσμένο για Mac OS και WINDOWS.
Ελπίζω αυτό το μίνι φροντιστήριο PyGTK3 να σας βοηθήσει. Μπορούν να κάνουν όλες τις εποικοδομητικές κριτικές που θέλουν.
Γνωρίζω επίσης ορισμένα Gtk 3.4 /3.6 και Vala GTK 3.4 / 3.6.
http://www.youtube.com/watch?v=9ckRn_sx8CE
Τέλος, οι χρήστες του KDE ζητούν συγγνώμη για το ότι δεν έκαναν ένα mini tutorial για το KDE.
Στο kde προτιμώ να χρησιμοποιώ το kdevelop (νομίζω ότι είναι αυτό που λέγεται) για να δημιουργήσω το gui άνετα, αλλά εξακολουθώ να δυσκολεύομαι να βρω τις διαδικασίες για να το κάνω να συμβεί x πράγμα: '(
Ιδανικό για όσους από εμάς χρησιμοποιούν το Python: D!
Χαιρετισμούς!
Γεια σας, παρακολουθώ αυτήν την κοινότητα εδώ και πολύ καιρό και δεν είμαι πολύ σίγουρος αν αυτή είναι η πρώτη φορά που σχολίασα ή το έχω ήδη κάνει πριν από τη σόγια (δεν έχω πολύ το δικαίωμα να γράφω σχόλια στον Ιστό). Το θέμα είναι ότι το κάνω για να αφήσω μια πρόταση στους Elav και KZKG ^ Gaara ως διαχειριστές και νομίζω ότι θα ήταν καλή ιδέα να προσθέσω ένα πρόσθετο για σύνταξη χρωμάτων τώρα που τελευταία βλέπω περισσότερες δημοσιεύσεις με κώδικα σε διαφορετικές γλώσσες προγραμματισμού. Ξέρω ότι υπάρχουν αρκετά πρόσθετα, αλλά δεν έχω δοκιμάσει καθόλου επειδή δεν είμαι χρήστης wordpress, οπότε σας αφήνω να σκεφτείτε τη βιωσιμότητα του αιτήματος. Παίρνω αυτήν την ευκαιρία για να ρωτήσω τους υπόλοιπους αναγνώστες τι σκέφτονται για την ιδέα, γιατί ξέρω ότι υπάρχουν άνθρωποι εκεί έξω που προτιμούν να διαβάσουν τον κώδικα χωρίς καμία διακόσμηση. Ζητώ συγνώμη εάν αυτό έχει ήδη σχολιαστεί εδώ και απορρίφθηκε για κάποιο λόγο, καθώς δεν θυμάμαι να βλέπω καμία συζήτηση για το θέμα.
Η αλήθεια είναι ότι θα ήθελα να έχω την επιλογή να χρωματίσω τη σύνταξη για να επισημάνω τον κώδικα των γλωσσών προγραμματισμού.
Αυτό θα βοηθούσε τους χρήστες που θέλουν να μάθουν γλώσσες προγραμματισμού.
Αλλά hey, είμαι επίσης άνετος με το φόρουμ και ότι μπορούμε να συζητήσουμε και να μάθουμε μαζί.
Το GNU Emacs είναι πιο άνετο, γιατί τουλάχιστον πρέπει να επιλέξετε σε ποιον ελεγκτή γλώσσας προγραμματισμού θέλετε να εργαστείτε (εάν δεν θέλετε περισσότερο βάρος για τον επεξεργαστή σας, χρησιμοποιήστε το GNU Nano και απολαύστε τον μινιμαλισμό στα καλύτερά του).
Elio μιλάμε για WordPress. Υλοποιήθηκε στο blog Desde Linux. Δεν έχει τις λειτουργίες να χρωματίζει τα γράμματα των αναρτήσεων.
Ω με συνχωρειτε.
Το Naaa emacs είναι άνετο για όσους έχουν 84 δάχτυλα XD .., κανονικά άτομα, textmate, sublimetext ή notepad ++ xd
Το αδικαιολόγητο είναι ότι δεν έχετε μάθει να πληκτρολογείτε, κάτι που απαιτείται για να μπορείτε να χειρίζεστε το GNU Emacs και τις συντομεύσεις πληκτρολογίου του. Επιπλέον, το GUI του καθιστά εύκολο για εσάς να χρησιμοποιήσετε τα μενού του (μπορεί να χρησιμοποιηθεί στα Windows, αλλά δεν συνιστάται να το κάνετε με κανονική λειτουργία αλλά με λειτουργία γραμμής εντολών, έτσι ώστε το win32 να μην μποϊκοτάρει το σενάριό σας).
Πολύ ωραίο σεμινάριο. Παρεμπιπτόντως, ο πηγαίος κώδικας python δεν έχει συνταχθεί, είναι μια ερμηνευμένη γλώσσα.
Μπορεί να μεταγλωττιστεί σε ψευδο κώδικα. Δεν είναι γλώσσα μηχανής, αλλά byte που αντιπροσωπεύουν κάτι στον διερμηνέα, αλλά η διαδικασία ονομάζεται επίσης μεταγλωττισμένη. Υπό αυτήν την έννοια, είναι δυνατόν να πούμε ότι κάτι έχει συνταχθεί.
Ίσως είναι καλύτερο να μάθετε pytgk2 επειδή η τελευταία διαθέσιμη έκδοση για τα Windows είναι 2.24. Η σειρά 3 είναι εμφανής από την απουσία της. Και οι κακές γλώσσες λένε ότι ο στοιχειώδης σπάει όλα τα άδια σε κάθε νέα έκδοση.
Προγραμματίζω ένα mockup με το GTK 3.4 / 3.6 και η αλήθεια είναι ότι σπάνε την υπομονή και το μυαλό σας, πρέπει να ξαναγράψετε τον κώδικα, τώρα καταλαβαίνω γιατί οι άνθρωποι του Linux Mint διαμαρτύρονται για το GTK και το έργο GNOME.
Σε όσους του MINT συμφωνώ με το GTK 2.4 αυτό δεν συνέβη.
Καλό φροντιστήριο και αναφορές.
Απλώς μια λεπτομέρεια, δεδομένου ότι έχει εισαχθεί κωδικός, στις εσοχές Python είναι υποχρεωτικές και πρέπει να τηρούνται στο παράδειγμα κώδικα.
Χαιρετισμούς!
Μπορείτε να εξηγήσετε από ποια είναι τα υποχρεωτικά αναγνωριστικά στο Python; Για να σας πω την αλήθεια, δεν το έχω ακούσει ποτέ. Έχω συνηθίσει άσχημα στα φόρουμ PyGTK 2/3 στα Αγγλικά και ίσως το παραβλέπω.
Στο Python δεν χρησιμοποιείτε πλήκτρα όπως στο C ή μπλοκ έναρξης / τερματισμού όπως στο Pascal, αλλά όλα γίνονται κατανοητά μέσω της εσοχής που δίνετε τον κωδικό. Δηλαδή, τα μπλοκ αναγνωρίζονται από την εγκοπή. Είναι ένα χαρακτηριστικό που μου αρέσει ιδιαίτερα. Αποφεύγετε να γράφετε κλειδιά και τέτοια πράγματα.
Απλώς δεν μου αρέσει αυτό, φαίνεται απλούστερο να βάζεις δύο μικρά πλήκτρα ή ένα std :: endl;, από το να βλέπεις αν η γραμμή xd έχει σωστά πίνακα
: p Ο καθηγητής προγραμματισμού σας θα βάλει 0 για εσάς. Ή χειρότερα θα σας απολύσουν από τη δουλειά σας. Αυτό που έχει μεγαλύτερη σημασία είναι ότι ο κώδικας είναι αναγνώσιμος με όλα αυτά που υπονοούν
τελειώνοντας με τιράντες, μου κάνει πολύ πιο αναγνώσιμο XD ..
Σοβαρά???
int main(int argc, char *argv[]){program_name = argv[0];while ((argc > 1) && (argv[1][0] == '-')) {switch (argv[1][1]) {case 'v':verbose = 1; break;case 'o':out_file = &argv[1][2];break;case 'l':line_max = atoi(&argv[1][2]);break;default:fprintf(stderr,"Bad option %s\n", argv[1]);usage();}++argv;--argc;} if (argc == 1) {do_file("print.in");} else {while (argc > 1) {do_file(argv[1]);++argv;--argc;}}return (0);}
Βλέπεις? Χωρίς εσοχές δεν είναι πολύ καλά κατανοητό. Και αυτό είναι εύκολο. Με ένα πιο περίπλοκο, μόνο ο μεταγλωττιστής το κατανοεί. Το θέμα είναι, επειδή πρέπει να εσοχή ούτως ή άλλως (για να καταλάβουν οι άνθρωποι τον κώδικα) γιατί θα ήταν περιττό και θα χρησιμοποιούσατε διαχωριστικά; Αρκετά με εσοχή και αυτό είναι.
Φυσικά, τίποτα δεν είναι κατανοητό, επειδή δεν τηρείτε τους κανόνες καλής σύνταξης ενός προγράμματος στο c / c ++. Αυτό που κάνατε είναι έγκυρο για οτιδήποτε, όπως ένθεση μιας συνάρτησης, μέσα σε μια συνάρτηση μέσα σε μια άλλη λειτουργία που βρίσκεται μέσα σε μια άλλη, τότε θέλω να σας δω xd αν είστε σε θέση να την καταλάβετε.
παρεμπιπτόντως, με δύο εμφανίσεις, αυτός ο κώδικας είναι εύκολα κατανοητός xD
Αυτό που έκανα έκανα σκόπιμα για να σας δείξω ότι χωρίς εγκοπή, παρόλο που καταρτίζει, είναι εξαιρετικά δύσκολο να κατανοήσω οποιονδήποτε κώδικα. Έτσι έχετε 2 κανόνες: Εσοχή και συμπεριλαμβάνεται με οριοθέτες. Αλλά αυτό είναι περιττό. Στην Python ένας τέτοιος κωδικός απλά δεν γίνεται αποδεκτός από τον διερμηνέα. Και έχετε μόνο έναν κανόνα: Εσοχή. Ανετα.
Όμως, όλοι με τα γούστα τους.
Και οι δύο είναι καλοί, οι εσοχές και οι μη εσοχές, κατά τη γνώμη μου, προτιμώ το στυλ με ερωτηματικό ή το ρουμπίνι, παρόμοιο με το python, αλλά η εσοχή δεν είναι απαραίτητη.
Έτσι κατανοείται καλύτερα: P:
echo 'int main (int argc, char * argv []) {program_name = argv [0]; while ((argc> 1) && (argv [1] [0] ==' - ')) {διακόπτης (argv [ 1] [1]) {υπόθεση «v»: verbose = 1; break; case 'o': out_file = & argv [1] [2]; break; case 'l': line_max = atoi (& argv [1] [2]); break; default: fprintf (stderr, »Κακή επιλογή % s \ n », argv [1]); use ();} ++ argv; –argc;} if (argc == 1) {do_file (" print.in ");} άλλο {ενώ (argc> 1 ) {do_file (argv [1]); ++ argv; –argc;}} επιστροφή (0);} '| perl -p -e 's / \ {/ \ {\ n \ t / g; s / \; / \; \ n \ t / g; s / \ t \} / \} / g;'
Χαιρετισμούς 😀
Νομίζω ότι ο Carlos σημαίνει ότι όταν βγαίνει ο κωδικός δεν υπάρχουν εσοχές. Αυτό με αντιγραφή και επικόλληση απλά δεν θα λειτουργήσει. Δεν ξέρω αν η ετικέτα υπάρχει κατά τη δημιουργία μιας ανάρτησης
για εισαγωγή κωδικού γλώσσας. Θα ήταν καλό αν το έβαλαν αν δεν υπάρχει.
Έχω ήδη δει τι είναι το πρόβλημα: η ετικέτα CODE αφαιρεί όλα τα κενά και τις καρτέλες (δεν πρέπει να το κάνει !!!) Αλλά αν βάλετε ένα nbsp σε αυτό, τότε ο κώδικας φαίνεται εντάξει. A0 σε hex (160 in dec) αν και νομίζω ότι μπορεί να εξαρτάται από τη γραμματοσειρά (δεν ξέρω). Εάν χρησιμοποιείται τότε βγαίνει έτσι:
def fib(n):
a, b = 0, 1
while a < n:
print(a)
a, b = b, a+b
Αυτό στις δοκιμές μου φαίνεται καλό, αλλά δεν έχω προεπισκόπηση όταν δημοσιεύω απαντήσεις (και πρέπει να υπάρχει !!!) Εάν δεν βγει, δεν είναι δικό μου λάθος
Κοιτάξτε τα παραδείγματα που δίνει ο Sebastian Pölsterl στο εκπαιδευτικό του PyGTK 3, ο Sebastian δεν τοποθετεί ετικέτες.
Παράδειγμα:
http://python-gtk-3-tutorial.readthedocs.org/en/latest/entry.html#example
μπορείτε να δείτε όλο το σεμινάριο του Sebastian.
Δεν ξέρω τι εννοείτε. Αυτό που λέω είναι ότι εδώ, στις δημοσιεύσεις, δεν είναι δυνατή η χρήση της ετικέτας HTML «ΚΩΔΙΚΟΣ» έτσι ώστε αυτό που βάζετε ως κώδικα και να βγαίνει καλά εσοχή. Στη σελίδα που αναφέρετε, εάν κοιτάξετε τις πηγές σελίδων, θα δείτε ότι δεν χρησιμοποιεί CODE αλλά χρησιμοποιεί άλλα οριοθέτες HTML.
Δεν έρχεται σε αντίθεση με τον κωδικό που βάλατε, αλλά μάλλον επισημαίνοντας ένα ελάττωμα στο σύστημα δημοσίευσης αυτού του ιστότοπου. Τι, ίσως, οι διαχειριστές μπορούν να διορθώσουν.
Όταν μιλάω για ετικέτες, προφανώς μιλάω για HTML, όχι για Python Σε κάθε περίπτωση, αν βάλετε κώδικα χωρίς εσοχή στο Python απλά δεν θα λειτουργήσει. Εάν ένας αρχάριος έρχεται και αντιγράψει τον κωδικό όπως εμφανίζεται σε αυτήν την ανάρτηση και προσπαθήσει να τον εκτελέσει, θα αποτύχει. Μπορεί να είστε απογοητευμένοι καθώς είστε αρχάριος. Και πάλι, το σφάλμα δεν είναι δικό σας. και στην αμέσως προηγούμενη απάντησή μου, αυτό που έκανα ήταν να δώσω έναν τρόπο επίλυσης του προβλήματος από το επίπεδο χρήστη-που-δημοσιεύσεις.
Έχετε απόλυτο δίκιο, θα έπρεπε να έχω ανεβάσει φωτογραφίες αντί να αντιγράψω τον κωδικό.
για να δείξετε τον τρόπο σωστής ταξινόμησης των δηλώσεων στο PyGTK 3.
Για να προγραμματίσετε με το python προτείνω να χρησιμοποιήσετε το Eclipse με το plugin PyDev ή το Pychar m
Όπως προαναφέρθηκε, γι 'αυτό δεν μου αρέσει ο πύθωνας, λόγω εσοχών. Όπως είδαμε, η αντιγραφή και επικόλληση δεν θα λειτουργήσει, κάτι που δεν συμβαίνει με άλλες γλώσσες όπως C, Java, PHP κ.λπ.
Το πράγμα της αναγνωσιμότητας, εφαρμόζουμε έναν κώδικα ομορφιάς (όπως http://indentcode.net/ ) και έτοιμος,
Το άσχημο είναι σταθερό, αλλά αν δεν υπάρχει εσοχή και η λογική αλλάξει, ακούγεται ..
Είμαι νέος στο PyGTK, είναι δυνατόν να αλληλεπιδράσω με κελύφη σενάρια σε αυτήν τη γλώσσα;
Ευχαριστώ για το σεμινάριο.
Χαιρετισμούς.