Πρώτα βήματα με Python + Qt # 1

Αυτό το σεμινάριο επικεντρώνεται στη διδασκαλία της χρήσης του πλαισίου QT χρησιμοποιώντας το Python ως γλώσσα προγραμματισμού, για αυτό μπορούμε να χρησιμοποιήσουμε τόσο το PySide όσο και το PyQt, αλλά σε αυτό το σεμινάριο θα χρησιμοποιήσουμε το PySide επειδή ο συγγραφέας αυτού του σεμιναρίου συμπαθεί καλύτερα την άδεια LGPL PySide. από το GPL ή το PyQt Commercial.

Πρώτα ... Τι είναι η Python;

Σύμφωνα με την Wikipedia:

"Η Python είναι μια πολύ υψηλού επιπέδου ερμηνευμένη γλώσσα προγραμματισμού της οποίας η φιλοσοφία δίνει έμφαση στην πολύ καθαρή σύνταξη και ευνοεί τον αναγνώσιμο κώδικα."

Το Python είναι μια γλώσσα προγραμματισμού πολλαπλών προδιαγραφών, οπότε υποστηρίζει διαφορετικά παραδείγματα προγραμματισμού python, για παράδειγμα υποστηρίζει: Προγραμματισμός αντικειμένου (OOP), Imperative Programming (Structured) και σε μικρότερο βαθμό Λειτουργικός προγραμματισμός.

Μόνο αυτό?

Όχι, είναι επίσης μια δυναμική γλώσσα πληκτρολόγησης, που σημαίνει ότι η python μας επιτρέπει να αντιστοιχίσουμε διαφορετικούς τύπους τιμών στην ίδια μεταβλητή κατά την εκτέλεση του προγράμματος, κάποιοι το βλέπουν ως πλεονέκτημα, άλλοι ως μειονέκτημα, δείτε μόνοι σας .

Εκτός από όσα έχουν ήδη αναφερθεί, η Python μας επιτρέπει (όπως πολλοί άλλοι), προγραμματίζοντας τόσο στο περιβάλλον του ιστού όσο και στην επιφάνεια εργασίας του διαδικτύου, είναι επίσης cross-platform, προς το παρόν υποστηρίζει Gnu / Linux, Windows, Mac osx, Android (Εάν πρέπει να τα αναφέρετε για την τροποποίησή σας).

Τι είναι το QT;

Το QT είναι ένα πλαίσιο πολλαπλών μορφών, που αναπτύχθηκε αρχικά από τη Nokia, για να πωληθεί αργότερα στην Digia, η οποία χρησιμοποιείται για ανάπτυξη εφαρμογών, είναι γραμμένη σε C ++, αλλά μπορεί να χρησιμοποιηθεί σε άλλες γλώσσες μέσω Bindings (στην περίπτωσή μας PySide ή PyQt )

Διαφορές μεταξύ PySide και PyQt

Κυρίως

  • Άδεια χρήσης, το PySide διαθέτει άδεια σύμφωνα με τους όρους της LGPL και το PyQT υπόκειται στους όρους της GPL ή σε εμπορική άδεια, οπότε θα πρέπει να πληρώσουμε σε περίπτωση δημιουργίας κλειστής εφαρμογής.
  • Το PySide δημιουργήθηκε από τη Nokia και το PyQt από την RiverBank.
  • Το PySide μας σώζει το πρόβλημα της χρήσης STR κάθε φορά που χρησιμοποιούμε το QString κάθε αντικειμένου QT.

Μπορούμε να αναλύσουμε λεπτομερώς τις ολοκληρωμένες αλλαγές Εδώ.

Προετοιμασία:

Εγκαθιστούμε το Qt:

Εάν έχουμε μια διανομή με το Kde θα πρέπει να έχουμε ήδη αυτό που χρειαζόμαστε, αν όχι:

sudo apt-get εγκαταστήστε qt4-dev-εργαλεία

Εγκαθιστούμε το PySide:

sudo apt-get install pyside pyside-tools

Η πρώτη μας εφαρμογή Python + QT

Πηγαίνουμε στον αγαπημένο μας επεξεργαστή κειμένου, σας προτείνω να εγκαταστήσετε το sublime-text2, αλλά μπορείτε να χρησιμοποιήσετε αυτόν που προτιμάτε και πληκτρολογούμε τον ακόλουθο κώδικα και τον αποθηκεύουμε με το όνομα που θέλουμε να τελειώνει πάντα με την επέκταση ".py", θα Θα αποθηκεύσω ως app1.py:

3

Βλέπε κώδικα

Τρέχουμε από την κονσόλα ως εξής:

python app1.py

Αυτό το παράθυρο πρέπει να εμφανιστεί

2

Τι; Μόνο αυτό, γιατί αν είχατε μόνο μια κονσόλα στο παρελθόν, για ποια παράπονα; Τι περιμένατε, ένα Erp; έλα έλα, κάτι ξεκινά.

Τώρα ας εξηγήσουμε τον κωδικό:

from PySide.QtGui import *

from sys import exit, argv

Εδώ εισάγουμε τις απαραίτητες λειτουργικές μονάδες για την εκτέλεση του PySide.

app = QApplication(argv)

Δημιουργούμε την παρουσία Qapplication με την εφαρμογή ονόματος.

window = Qwidget()

Δημιουργούμε την παρουσία του QWidget ().

window.setWindowTitle("Primera App PySide")

Εκτελούμε τη μέθοδο setWindowTitle, η οποία λαμβάνει μια συμβολοσειρά ως παράμετρο για να "ορίσουμε" τον τίτλο του Qwidget μας.

window.show()

Δείχνουμε το παράθυρο μας

exit(app.exec_())

τελικά εκτελούμε τον άπειρο κύκλο εκτέλεσης του QApplication ().

Ευχαριστίες

Σας ευχαριστώ για όσους με ακολούθησαν εδώ και ήταν χρήσιμοι. Για το επόμενο σεμινάριο θα εξηγήσω πώς να σχεδιάσουμε τα παράθυρά μας με το QT Designer και να τα εισαγάγω στα έργα μας.

Επιπλέον, προσθέτω το σύνδεσμο στο φόρουμ desde linux όπου έχω ένα μικρό θέμα με μια μικρή βιβλιοθήκη με σεμινάρια και οδηγούς για python, που περιέχει διαφορετικούς όρους όπως:

Βασικά μαθήματα Python

wxPython

PyQt και PySide

Django

web2py

Επιστημονικός προγραμματισμός στο python.

Και πολλά άλλα.

ΣΥΝΔΕΣΗ ΣΤΟ ΦΟΡΟΥΜ

Ελπίζω να σας εξυπηρετούν, λέω αντίο, όπως πάντα χαρά να ανήκω σε αυτήν την υπέροχη κοινότητα.


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.

  1.   @ εμπιστοσύνη17 dijo

    Ευχαριστώ για την ανάρτηση!

  2.   Annubis dijo

    2 πράγματα:

    1. Το Qt δεν αναπτύχθηκε αρχικά από τη Nokia, αλλά από την Trolltech, η οποία αργότερα αγοράστηκε από τη Nokia. Στη συνέχεια, το τελευταίο πούλησε το Qt στην Digia.
    2. Η εικόνα στο πρώτο παράδειγμα εφαρμογής δεν ταιριάζει με τον κωδικό.

    Ευχαριστώ για το σεμινάριο, θα το ακολουθήσω 🙂

    1.    f3niX dijo

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

    2.    f3niX dijo

      Δεν μπορώ να τροποποιήσω, το αφήνω σε έναν συντάκτη.

      Χαιρετισμούς.

      1.    neysonv dijo

        Στείλτε email σε έναν επεξεργαστή με το διορθωμένο σεμινάριο. μπορείτε να το στείλετε στο email του @nano που είναι ένας από τους συντάκτες
        mailto: nano.world.contact@gmail.com
        παρακαλώ μην αφήσετε το σεμινάριο έτσι
        αφορά

  3.   Germán dijo

    Ένα πράγμα με εντυπωσιάζει: γιατί χρησιμοποιείτε το "from import *" στον κωδικό σας;

    Χαιρετισμούς!

    1.    f3niX dijo

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

      Χαιρετισμούς.

      1.    Germán dijo

        Βρίσκω αυτό το είδος σύγχυσης. Επιπλέον, δεν συνιστάται στο PEP8:

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

        1.    f3niX dijo

          Έχω καθοδηγηθεί κυρίως από επαγγελματικούς κωδικούς, όπως το Ninja-Ide, μπορείτε να δείτε τον κωδικό εδώ: https://github.com/ninja-ide/ninja-ide/blob/master/ninja_ide/core/ipc.pyΑυτό γίνεται και στο PyQt, αλλά σε οποιαδήποτε μορφή δεν υπάρχει τίποτα που σας αναγκάζει να χρησιμοποιήσετε τη μία ή την άλλη μορφή.

          Εδώ μπορείτε να δείτε μια συζήτηση για το StackOverflow, σχετικά με αυτό:

          http://stackoverflow.com/questions/710551/import-module-or-from-module-import

          Εκεί αναφέρουν πλεονεκτήματα και μειονεκτήματα καθενός από τα στυλ.

          1.    f3niX dijo

            εντάξει συγγνώμη, δεν σας κατάλαβα, το ξέρω, το έκανα μόνο επειδή δεν επρόκειτο να δώσω μια εξήγηση για κάθε στοιχείο QApplication, QWidget και μετά να γενικεύσω, αλλά έχετε απόλυτο δίκιο

            Συγγνώμη για την παρεξήγηση.

          2.    Germán dijo

            Όχι, δεν καταλάβατε ή δεν δώσατε προσοχή ... εννοώ τη χρήση «από την εισαγωγή μονάδας *», δηλαδή τον «αστερίσκο» ... σε αυτήν την ανάρτηση StackOverflow μιλούν για κάτι άλλο αλλά το τονίζουν ακόμα:

            "Κάθε μέθοδος είναι αποδεκτή, αλλά μην τη χρησιμοποιείτε από την εισαγωγή μονάδας *."

            Είναι κατανοητό τώρα;

          3.    Felipe dijo

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

          4.    Germán dijo

            Αχ, τώρα καταλαβαίνω ... ούτως ή άλλως, μην με πάρει πολύ καιρό, είμαι επίσης αρχάριος στην Πύθωνα. Εάν σταματήσετε από το ιστολόγιό μου, θα δείτε ότι έκανα μια ανάρτηση παρόμοια με τη δική σας, αλλά με το Gtk + 3 χρησιμοποιώντας το PyGObject.

            Χαιρετισμούς και ευχαριστίες!

        2.    f3niX dijo

          Εδώ αφήνω το Pep8, στα Ισπανικά, συνιστώντας τη χρήση του im
          Είναι ιδιαίτερα ανεπιθύμητη η χρήση σχετικών εισαγωγών για την εισαγωγή κώδικα από ένα πακέτο. Χρησιμοποιείτε πάντα την απόλυτη διαδρομή πακέτου για όλες τις εισαγωγές. Ακόμα και τώρα που το PEP 328 [7] εφαρμόζεται πλήρως στο Python 2.5, η χρήση σχετικών εισαγωγών αποθαρρύνεται σοβαρά. οι απόλυτες εισαγωγές είναι πιο φορητές και συνήθως πιο ευανάγνωστες.

          Όταν εισάγετε μια τάξη από μια ενότητα, συνήθως είναι σωστό να το κάνετε αυτό
          από το myclass εισαγάγετε το MyClass
          από το foo.bar.yourclass εισαγάγετε το YourClass

          αφορά

          1.    κυνηγός dijo

            Διάβασε αυτό: http://stackoverflow.com/questions/3615125/should-wildcard-import-be-avoided

            Ο Alex Martelli (core py developer) προτείνει κάτι τέτοιο:


            from PyQt4 import QtCore, QtGui

  4.   MSX dijo

    Ήθελα περισσότερα, γιατί όταν το 2ο μέρος !;
    Χαιρετισμούς 🙂

  5.   eliotime3000 dijo

    Πολύ καλά μαθήματα, επίσης μπορεί να είναι πιο άνετο να προγραμματίζετε.

  6.   κυνηγός dijo

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

    https://github.com/xr09/metrocontador

    1.    f3niX dijo

      Η εφαρμογή dhunter είναι εξαιρετική, εδώ δεν γνωρίζουμε καν πόσο μας χρεώνουν για ηλεκτρικό ρεύμα, χαχα χαιρετισμούς.

      1.    κυνηγός dijo

        Σας ευχαριστώ, είναι μία από αυτές τις εφαρμογές που κάνει για προσωπική χρήση και εξυπηρετεί άλλους. Εδώ στην Κούβα η απόδειξη αναλύεται με την τιμή, είναι εύκολο να αντιγράψετε τον αλγόριθμο.

  7.   Χοσέ Ελόι dijo

    Θα γνωρίζω πολύ καλά αυτό το μάθημα. Ενδιαφέρομαι για εφαρμογές πολλαπλών πλατφορμών για μεγάλο χρονικό διάστημα και πιστεύω ότι ο συνδυασμός Python + QT / Pyside είναι μια εξαιρετική επιλογή. Χαιρετίσματα και συγχαρητήρια για την πρωτοβουλία

  8.   Μπράιαν Ροντρίγκεζ dijo

    Ακολούθησα όλα τα βήματα ακριβώς όπως λέτε, αλλά όταν τρέχω την εφαρμογή app1.py στο τερματικό μου λέει Traceback (τελευταία τελευταία κλήση):
    Αρχείο "app1.py", γραμμή 1, σε
    από PySide.QtGui εισαγωγή *
    ImportError: Δεν υπάρχει μονάδα με το όνομα PySide.QtGui. Για τι είναι αυτό ;.

    1.    Felipe dijo

      αυτό συμβαίνει επειδή χρησιμοποιείτε μια έκδοση του python ως τον προεπιλεγμένο διερμηνέα, αλλά δεν έχετε εγκαταστήσει το pyside για αυτήν την έκδοση.

      Δοκιμάστε να προσθέσετε στην αρχή του αρχείου:
      #! usr / bin / python3
      ή αλλιώς
      #! usr / bin / python2

      Σας προτείνω να χρησιμοποιήσετε το Eclipse με pydev και να διαμορφώσετε καλά τον διερμηνέα.
      SLDs

      1.    Felipe dijo

        #! / usr / bin / python3
        ή αλλιώς
        #! / usr / bin / python2

        1.    f3niX dijo

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

          1.    Μπράιαν Ροντρίγκεζ dijo

            Πώς μπορώ να το επαληθεύσω;

          2.    f3niX dijo

            Σε μια κονσόλα χρήση "Python", ούτως ή άλλως, σας συνιστώ να εισάγετε τη βιβλιοθήκη που άφησα παρακάτω στην ανάρτηση και να κατεβάσετε το "python για όλους", χρειάζεστε περισσότερη βάση.

            Χαιρετίσματα και τύχη.

          3.    Μπράιαν Ροντρίγκεζ dijo

            Ευχαριστώ πολύ, ήταν πολύ χρήσιμο για μένα.

          4.    Μαουρίσιο Τομπάρες dijo

            Κοίτα φίλε F3niX Βρήκα αυτό, φαίνεται ότι για το python 3.3.2 στα παράθυρα (που έχω μέχρι την επόμενη εβδομάδα) έχουν δυαδικά αρχεία για 32 bit και 64 bit, δοκίμασα το παράδειγμά σας και λειτουργεί με τον πύθωνα 3.3.2 και Χρησιμοποιώ το The PyScripter που εγκαθιστά διαφορετικά περιβάλλοντα, εάν ανοίξετε το python 3, εκτελεί τα σενάρια ως python 3 και αν ανοίξετε το 2.7 τα εκτελεί ως 2.7 και ούτω καθεξής (λογικά πρέπει να έχετε εγκατεστημένη αυτήν την έκδοση του python ... ειναι κατανοητο)

            http://qt-project.org/wiki/PySide_Binaries_Windows

            Θα σε αφήσω εκεί, κουτσομπολιά, ίσως θα εξυπηρετήσει κάποιον άλλο 😀

      2.    Μπράιαν Ροντρίγκεζ dijo

        Έχω το ίδιο σφάλμα.

        1.    Germán dijo

          Έχετε εγκαταστήσει το PySide;

          1.    Μπράιαν Ροντρίγκεζ dijo

            Το έχω εγκαταστήσει.

        2.    Felipe dijo

          Και δοκιμάστε με το PyQT4 να το εγκαταστήσετε και στη συνέχεια να αλλάξετε τις γραμμές PySide για PyQT4 ή PyQt4 και να το εκτελέσετε. Τζότζο. Χρησιμοποιήστε την έκλειψη. Τυχη.

          1.    Μπράιαν Ροντρίγκεζ dijo

            Πως το κάνω αυτό?.

  9.   Karlinux dijo

    Ευχαριστώ πολύ !!! Αναμονή για το δεύτερο κεφάλαιο

    1.    f3niX dijo

      Για αυτήν την Παρασκευή μπορώ να το δημοσιεύσω (Το πανεπιστήμιο με έχει λίγο γεμάτο) χαιρετισμούς.

  10.   MauricioTobares dijo

    Φίλος F3nIX Περιμένω το σεμινάριό σας N ° 2, 3, 4… N hehehe

    Έχω ήδη εγκαταστήσει το πολύ κομψό linux μου με το PySide σε αναμονή και τα πάντα!

    Ας δούμε πότε ενθαρρύνεται να δείξει έναν νέο δάσκαλο 😀

    1.    f3niX dijo

      Συγγνώμη φίλε, το έχω σε προσχέδια, αλλά η δουλειά και οι μελέτες δεν μου έδωσαν χρόνο, υπόσχομαι να βγάλω κάτι αυτή την εβδομάδα.

      Ένας μεγάλος χαιρετισμός

  11.   Dante dijo

    Γεια σας, με ενδιέφερε να μάθω την Python για μεγάλο χρονικό διάστημα, αλλά έχω κάποιες αμφιβολίες. Αυτό που θέλω είναι να κάνω μια εφαρμογή για να βελτιώσω λίγο τη διαδικασία πληροφόρησης της οικογενειακής επιχείρησης όπου εργάζομαι, θα ήθελα να κάνω κάτι για τα παράθυρα, με παράθυρα στην αρχή, θα λειτουργούσε όλα σε έναν μόνο υπολογιστή και στη συνέχεια θα μπορούσε να συνδεθείτε μέσω Διαδικτύου στη βάση δεδομένων στην οποία θα συνδεθούν μερικοί υπολογιστές. Υπάρχει μεγάλη ποικιλία όσον αφορά το GUIing της εφαρμογής και αυτό με κάνει να ζαλίζομαι. Τι προτείνετε να του δώσετε μια μοντέρνα και ελκυστική εμφάνιση; Θα έκανα επίσης στατιστικά γραφήματα και εκτυπώσεις αναφορών, τι μπορώ να χρησιμοποιήσω για αυτό; Στην υγειά σας

  12.   jorge dijo

    Γεια σας, πολύ καλή, η ανάρτησή σας, έχω μια ερώτηση, θα μπορούσα να πουλήσω την εφαρμογή μου φτιαγμένη με pyside χωρίς κανένα πρόβλημα;

    1.    f3niX dijo

      Λοιπόν, οι άδειες είναι πάντα τρελές, αλλά οι άδειες δωρεάν λογισμικού σάς επιτρέπουν επίσης να πουλάτε λογισμικό, αυτό που συμβαίνει είναι ότι η GPL σας αναγκάζει να διανείμετε τον κώδικα, σε αντίθεση με το LGPL, το οποίο δεν σας υποχρεώνει να το κάνετε.

      Τέλος πάντων, δεν είμαι ειδικός στις άδειες.

      Χαιρετισμούς.