Első lépések a Python + Qt # 1 használatával

Ez az oktatóanyag a QT keretrendszer használatának a Python programozási nyelvként történő használatának oktatására összpontosít, ehhez használhatjuk a PySide-et és a PyQt-t is, de ebben az oktatóanyagban a PySide-et fogjuk használni, mert az oktatóanyag szerzőjének jobban tetszik az LGPL PySide licenc. mint a GPL vagy a PyQt Commercial.

Először ... Mi az a Python?

A Wikipedia szerint:

"A Python egy nagyon magas szintű értelmezett programozási nyelv, amelynek filozófiája a nagyon tiszta szintaxist hangsúlyozza, és elősegíti az olvasható kód használatát."

A Python egy multipadradigm programozási nyelv, ezért támogatja a python programozás különböző paradigmáit, például támogatja: Object Oriented Programming (OOP), Imperative Programming (Strukturált) és kisebb mértékben Funkcionális programozást.

Csak az, hogy?

Nem, ez is egy dinamikus gépelési nyelv, ami azt jelenti, hogy a python lehetővé teszi számunkra, hogy a program futtatása során különböző típusú értékeket rendeljünk ugyanahhoz a változóhoz, egyesek előnyként, mások hátrányként tekintenek rá, nézze meg Ön is.

A fent említetteken kívül a Python lehetővé teszi számunkra (mint sokan mások) a programozást mind a webes környezetben, mind a webes asztalon, ez szintén platformokon átívelő, jelenleg támogatja a Gnu / Linux, a Windows, a Mac osx, az Android alkalmazást ( módosítás).

Mi az a QT?

A QT egy multiplatform keretrendszer, amelyet eredetileg a Nokia fejlesztett ki, majd később eladható a Digia számára, amelyet alkalmazásfejlesztésre használnak, C ++ nyelven írják, de más nyelveken is használhatók a Bindings révén (esetünkben PySide vagy PyQt )

Különbségek a PySide és a PyQt között

főleg

  • Licencia, a PySide az LGPL feltételei szerint, a PyQT pedig a GPL feltételei szerint vagy kereskedelmi licenccel rendelkezik, ezért zárt alkalmazás létrehozása esetén fizetnünk kellene.
  • A PySide-et a Nokia, a PyQt-t a RiverBank készíti.
  • A PySide megkímél minket az STR használatával járó problémáktól, amikor minden egyes QT objektum QStringjét használjuk.

Részletezhetjük a teljes változásokat Itt.

előkészítés:

Telepítjük a Qt-t:

Ha disztribúciónk van a Kde-vel, akkor már meg kell szereznünk, amire szükségünk van, ha nem:

sudo apt-get install qt4-dev-tools

Telepítjük a PySide-ot:

sudo apt-get install pyside pyside-tools

Első Python + QT alkalmazásunk

Látogatunk a kedvenc szövegszerkesztőnkhöz, javasoljuk, hogy telepítse a sublime-text2-t, de használhatja a kívántat, és beírjuk a következő kódot, és elmentjük azzal a névvel, amelyet szeretnénk, hogy mindig a ".py" kiterjesztéssel záruljon, Mentem az app1.py néven:

3

Lásd: Kód

A konzolról így futtatjuk:

python app1.py

Ennek az ablaknak meg kell jelennie

2

Mi? Csak ez, mert ha korábban csak konzolod volt, mire panaszkodsz? Mire számítottál, egy Erp-re? gyere az emberre, mert valami elkezdődik.

Most magyarázzuk el a kódot:

from PySide.QtGui import *

from sys import exit, argv

Itt importáljuk a PySide futtatásához szükséges modulokat.

app = QApplication(argv)

A névalkalmazással hozzuk létre a Qapplication példányt.

window = Qwidget()

Létrehozzuk a QWidget () példányát.

window.setWindowTitle("Primera App PySide")

Végrehajtjuk a setWindowTitle metódust, amely Stringet kap paraméterként a Qwidgetünk címének "beállításához".

window.show()

Megmutatjuk az ablakunkat

exit(app.exec_())

végül végrehajtjuk a QApplication () végtelen végrehajtási ciklusát.

Köszönöm

Köszönöm azoknak, akik követtek itt és hasznosak voltak. A következő bemutatóhoz elmagyarázom, hogyan tervezhetjük meg ablakainkat a QT Designer segítségével, és hogyan importálhatom őket a projektjeinkbe.

Ezenkívül hozzáadom a fórum linkjét desde linux ahol van egy kis témám python oktatóanyagok és útmutatók kis könyvtárával, amelyek különböző kifejezéseket tartalmaznak, többek között:

Alapvető Python oktatóanyagok

wxPython

PyQt és PySide

Django

web2py

Tudományos programozás a pythonban.

És még sok más.

LINK A FÓRUMHOZ

Remélem, hogy szolgálnak, búcsúzom, mint mindig öröm, hogy ebbe a csodálatos közösségbe tartozhatok.


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.

  1.   @ trust17 dijo

    Köszönöm a bejegyzést!

  2.   Annubis dijo

    2 dolog:

    1. A Qt-t eredetileg nem a Nokia, hanem a Trolltech fejlesztette ki, amelyet később a Nokia vásárolt meg. Utóbbi aztán eladta a Qt-t a Digiának.
    2. Az első alkalmazási példa képe nem egyezik a kóddal.

    Köszönöm a bemutatót, követni fogom 🙂

    1.    f3niX dijo

      Teljesen igazad van, hiányzott. És a második dolog, amiben igazad van, az az, hogy megváltoztattam, hogy könnyebb legyen és ne használjam az osztályt, és hiányoltam a módosítást, a kezdő hibákat. Már átadom a javításokat, hogy néhány szerkesztő jóváhagyja azokat.

    2.    f3niX dijo

      Nem tudok módosítani, meghagyom valamilyen szerkesztőnek.

      Üdvözlet.

      1.    neysonv dijo

        Küldjön egy szerkesztőnek e-mailt a javított oktatóanyaggal. elküldheti @ nano e-mailjére, aki az egyik szerkesztő
        mailto: nano.world.contact@gmail.com
        kérlek, ne hagyd így az oktatóanyagot
        tekintetében

  3.   Germán dijo

    Egy dolog döbben rá: miért használja az "import *" -t a kódjában?

    Üdvözlet!

    1.    f3niX dijo

      Ez az importálás helyes módja. Ilyen importáláskor megmondja, hogy a modul melyik osztályát szeretné importálni, és nem hívja meg a teljes modult.

      Üdvözlet.

      1.    Germán dijo

        Ezt zavarónak tartom. Ezenkívül a PEP8 nem ajánlott:

        "Kerülni kell a helyettesítő karakterek importálását (a modulimportból *), mivel nem egyértelmű, hogy mely nevek vannak a névtérben, összezavarva az olvasókat és számos automatizált eszközt ..."

        1.    f3niX dijo

          Leginkább szakmai kódok vezéreltek, például a Ninja-Ide, a kódot itt láthatja: https://github.com/ninja-ide/ninja-ide/blob/master/ninja_ide/core/ipc.pyPyQt-ben is megtörténik, de semmilyen módon semmi sem kényszeríti az egyik vagy a másik forma használatára.

          Itt láthat egy vitát a StackOverflow-ról erről:

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

          Ott megemlítik az egyes stílusok előnyeit és hátrányait.

          1.    f3niX dijo

            ok sajnálom, hogy nem értelek, tudom, csak azért tettem, mert nem akartam magyarázatot adni az egyes elemekre: QApplication, QWidget, majd általánosíts, de teljesen igazad van.

            Elnézést a félreértés miatt.

          2.    Germán dijo

            Nem, nem értetted, vagy nem figyeltél ... Mármint a «from module import *» használatát értem, vagyis a «csillagot» értem ... abban a StackOverflow bejegyzésben, amiről másról beszélnek, de mégis hangsúlyozzák:

            "Bármelyik módszer elfogadható, de ne használja a modulimportból *."

            Most megértették?

          3.    Felipe dijo

            Németnek igaza van. Mi haszna a modulimportból, ha az összes tartalmat a csillaggal importálja az adott importálási modulhoz. Slds ugyanolyan szép poszt.

          4.    Germán dijo

            Hát, most már értem ... különben is, ne tartson túl sokáig, én is kezdő vagyok a Pythonban. Ha meglátogatja a blogomat, akkor látni fogja, hogy a hozzád hasonló, de a Gtk + 3-mal készített bejegyzést készítettem a PyGObject segítségével.

            Üdvözlet és köszönet!

        2.    f3niX dijo

          Itt hagyom a Pep8-at, spanyolul az im használatát ajánlva
          Nagyon nem ajánlatos a relatív importálást használni a kód importálásához egy csomagból. Az importáláshoz mindig a csomag abszolút elérési útját használja. Még most is, amikor a PEP 328 [7] a Python 2.5-ben teljes mértékben megvalósításra került, a relatív import használata komolyan nem javasolt; az abszolút import hordozhatóbb és általában olvashatóbb.

          Ha osztályt importál egy modulból, általában helyes ezt megtenni
          from myclass importálja a MyClass-ot
          a foo.bar.yourclass címről importálja a YourClass-ot

          Üdvözlet

          1.    vadász dijo

            Olvassa el ezt: http://stackoverflow.com/questions/3615125/should-wildcard-import-be-avoided

            Alex Martelli (core py fejlesztő) ilyesmit ajánl:


            from PyQt4 import QtCore, QtGui

  4.   MSX dijo

    Többet akartam, mire a 2. rész!?
    Üdvözlet 🙂

  5.   eliotime3000 dijo

    Nagyon jó oktatóanyagok, ráadásul kényelmesebb lehet programozni.

  6.   vadász dijo

    Íme egy példa az interfészről a semmiből (a QtDesigner használata nélkül).

    https://github.com/xr09/metrocontador

    1.    f3niX dijo

      A dhunter alkalmazás kiváló, itt azt sem tudjuk, mennyit számítanak fel nekünk az áramért, haha ​​üdvözlet.

      1.    vadász dijo

        Köszönöm, ez egyike azoknak az alkalmazásoknak, amelyeket személyes használatra készít és másokat szolgál ki. Itt Kubában a nyugta lebontva van az árfolyammal, könnyen másolható az algoritmus.

  7.   Jose Eloy dijo

    Nagyon tisztában leszek ezzel a tanfolyammal. Régóta érdekeltek a cross-platform alkalmazások, és úgy gondolom, hogy a Python + QT / Pyside kombináció remek lehetőség. Üdvözlet és gratuláció a kezdeményezéshez

  8.   Bryan Rodriguez dijo

    Pontosan követtem az összes lépést, ahogy mondtad, de amikor az app1.py alkalmazást futtatom a terminálon, a Traceback (legutóbbi hívás utoljára) üzenete:
    Az "app1.py" fájl 1. sora a
    a PySide.QtGui importból *
    ImportError: Nincs PySide.QtGui nevű modul. Mi ez?

    1.    Felipe dijo

      ez azért van, mert a python verzióját használja alapértelmezett tolmácsként, de nincs telepítve a pyside az adott verzióhoz.

      Próbálja meg hozzáadni a fájl elejéhez:
      #! usr / bin / python3
      különben
      #! usr / bin / python2

      Azt javaslom, hogy használja az Eclipse programot a pydev-lel, és jól konfigurálja a tolmácsot.
      slds

      1.    Felipe dijo

        #! / usr / bin / python3
        különben
        #! / usr / bin / python2

        1.    f3niX dijo

          A PySide még nem kompatibilis a Python3-zal, legyen ezzel körültekintő, másodszor pedig az interaktív python-konzolon keresztül ellenőrzi az importálást, így tudja, hogy telepítette-e vagy sem, a pip-et is telepíti.

          1.    Bryan Rodriguez dijo

            Hogyan ellenőrizhetem?

          2.    f3niX dijo

            Konzolon a "Python" használatával mindenképp azt javaslom, hogy írja be azt a könyvtárat, amelyet alább hagytam a bejegyzésben, és töltse le a "python mindenkinek" tételt, több alapra van szüksége.

            Üdvözlet és szerencse.

          3.    Bryan Rodriguez dijo

            Nagyon köszönöm, nagyon hasznos volt számomra.

          4.    Mauricio Tobares dijo

            nézd meg F3niX barátom. Megtaláltam ezt, úgy tűnik, hogy a python 3.3.2-hez a Windows-on (ami nekem van a következő hétig) 32 és 64 bites bináris fájljaik vannak, kipróbáltam a példádat, és a Python 3.3.2-vel működik, és A PyScriptert használom, amely különböző környezeteket telepít, ha megnyitja a python 3-at, akkor a parancsfájlokat python 3-ként futtatja, és ha megnyitja a 2.7-et, akkor ezeket 2.7-ként és így tovább hajtja végre (logikusan a pythonnak ezt a verzióját kell telepíteni ... megértett)

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

            Ott hagylak, pletyka, talán másnak fog szolgálni 😀

      2.    Bryan Rodriguez dijo

        Ugyanazt a hibát kapom.

        1.    Germán dijo

          Telepítve van a PySide?

          1.    Bryan Rodriguez dijo

            Telepítettem.

        2.    Felipe dijo

          Próbálja ki a PyQT4-et, telepítse, majd változtassa meg a PySide sorokat PyQT4 vagy PyQt4-re, és futtassa. jojo. Használd a napfogyatkozást. Szerencse.

          1.    Bryan Rodriguez dijo

            Hogyan tudom ezt megtenni?

  9.   karlinux dijo

    Nagyon szépen köszönjük !!! Várakozás a második fejezetre

    1.    f3niX dijo

      Erre a péntekre kiadhatom (az egyetemnek van egy kis teljes szövegem) üdvözletemet.

  10.   MauricioTobares dijo

    F3nIX barát várok a 2., 3., 4. sz. Oktatóra ... N hehe

    Már telepítettem a nagyon elegáns linuxomat PySide várakozással és mindennel!

    Lássuk, mikor ösztönzik új oktató bemutatására 😀

    1.    f3niX dijo

      Bocsásson meg barátom, tervezeteim vannak, de a munka és a tanulmányok nem adtak időt, ígérem, hogy a héten kihozok valamit.

      Egy nagy üdvözlet

  11.   Dante dijo

    Helló, régóta érdekel a Python megtanulása, de vannak kételyeim. Azt akarom, hogy készítsek egy alkalmazást, hogy egy kicsit javítsam a családi vállalkozás információs folyamatát, ahol dolgozom, szeretnék tenni valamit az ablakokért, eleinte ablakokkal, mindez egyetlen számítógépen működne, és aztán képes lesz interneten keresztül csatlakozni kell ahhoz az adatbázishoz, amelyhez pár számítógép csatlakozna. Nagyon sokféleség van az alkalmazás GUI-jában, és ettől megszédülök. Mit ajánl, hogy modern és vonzó megjelenést kapjon? Készítenék néhány statisztikai grafikont és jelentéseket is nyomtatnék, mit használhatok erre? Egészségére

  12.   Jorge dijo

    Helló, nagyon jó, a hozzászólásod, van egy kérdésem, problémamentesen eladhatnám a pyside-el készített alkalmazásomat?

    1.    f3niX dijo

      Nos, a licencek mindig őrültek, de az ingyenes szoftverlicencek lehetővé teszik szoftverek eladását is, az történik, hogy a GPL kényszeríti a kód terjesztésére, ellentétben az LGPL-vel, ami nem kényszeríti erre.

      Mindenesetre nem vagyok az engedélyezés szakértője.

      Üdvözlet.