Primers Passos amb Python + Qt # 1

Aquest tutorial va enfocat a ensenyar l'ús de l'framework QT usant Python com a llenguatge de programació, per això podem usar tant pyside com PyQt, però en aquest tutorial farem servir pyside pel fet que a l'autor d'aquest tutorial us agrada mes la llicència LGPL d'pyside que la GPL o Comercial de PyQt.

¿Primer ... que és Python?

Segons la Viquipèdia:

«Python és un llenguatge de programació interpretat d'altíssim nivell la filosofia posa l'accent en una sintaxi molt neta i que afavoreixi en un codi llegible."

Python és un llenguatge de programació multipadradigma, de manera que suporta diferents paradigmes de programació Python per exemple suporta: Programació Orientada a Objectes (POO), Programació imperativa (Estructurada) i en menor mesura programació Funcional.

¿Només això?

No, a més és un llenguatge de tipus dinàmics, el que vol dir que Python ens permet assignar diferents tipus de valors a una mateixa variable durant l'execució de el programa, uns ho veuen com un avantatge altres com un desavantatge, doneu-vos compte vostès mateixos.

A més del que ja esmentat, Python ens permet (com molts altres), programació tant en l'entorn web com a l'escriptori web, també és multiplataforma, actualment suporta GNU / Linux, Windows, Mac OSX, Android (Si falta algun esmentar-per a la seva modificació).

Que és QT?

QT és un framework multiplataforma, desenvolupat originalment per Nokia, per després ser venut a DIGIA, que s'utilitza per al desenvolupament d'aplicacions, està escrit en C ++, però es pot utilitzar en altres llenguatges a través d'Bindings (en el nostre cas pyside o PyQt )

Diferències entre pyside i PyQt

Principalment

  • Llicència, pyside aquesta llicenciat sota els termes de la LGPL i PyQt aquesta sota els termes de la GPL o sota llicència comercial, pel que necessitaríem pagar en cas de crear una aplicació tancada.
  • Pyside és creat per Nokia, i PyQt per Riverbank.
  • Pyside ens estalvia el problema d'usar STR cada veus que fem servir QString de cada un dels objectes de QT.

Els canvis complets els podem detallar De qui.

Preparació:

Instal·lem Qt:

Si tenim una distro amb Kde ja hauríem de tenir el necessari, si no:

sudo apt-get install Qt4-dev-tools

Instal·lem pyside:

sudo apt-get install pyside pyside-tools

La nostra Primera Aplicació Python + QT

Ens anem al nostre editor de text favorit, jo els recomano que instal·lin sublim-TEXT2, però poden usar el que prefereixin, i tipeamos el següent codi i el guardem amb el nom que vulguem sempre acabant amb l'extensió ".py", jo ho guardés com app1.py:

3

veure Codi

El executem des de consola així:

python app1.py

Les hauria d'aparèixer aquesta finestra

2

Que ?, ¿Només Això, doncs si abans només tenies consola que et queixes? Què esperaves, XNUMX Erp? anem home per alguna cosa es comença.

Ara expliquem el codi:

from PySide.QtGui import *

from sys import exit, argv

Aquí importem els mòduls de necessaris per a l'execució de pyside.

app = QApplication(argv)

Creem la instància de color QApplication amb el nom app.

window = Qwidget()

Creem la instància de QWidget ().

window.setWindowTitle("Primera App PySide")

Executem el mètode setWindowTitle, que rep un String com a paràmetre per a "setear" el títol del nostre Qwidget.

window.show()

Mostrem la nostra finestra

exit(app.exec_())

per últim executem el cicle infinit d'execució de la nostra color QApplication ().

Gràcias

Gràcies pels que m'hagin seguit fins aquí i els hagi estat útil. Pel proper tutorial explicaré com dissenyar les nostres finestres amb QT Designer i importar-les als nostres projectes.

Addicionalment els afegeixo el link al fòrum de desde linux on tinc un petit tema amb una petita biblioteca de tutorials i guies de python, que conté diferents termes que inclouen:

Tutorials Python bàsics

wxPython

PyQt i pyside

Django

web2py

Programació científica en Python.

I molts mes.

LINK A FÒRUM

Espero els serveixin, m'acomiado, com sempre un plaer pertànyer a aquesta meravellosa comunitat.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   @ trust17 va dir

    Gràcies pel post!

  2.   Annubis va dir

    2 coses:

    1. Qt no va ser desenvolupat originalment per Nokia, sinó per Trolltech, que després va ser comprada per Nokia. Aquesta última després va vendre Qt a DIGIA.
    2. La imatge de el primer exemple de apllicación no correspon amb el codi.

    Gràcies pel tutorial, ho seguiré 🙂

    1.    F3niX va dir

      Tens tota la raó es em passo per alt. I el segon tens també raó, és que ho canviï per fer-ho mes senzill i no fer servir class i es em passo per alt la modificació, errors de principiant. Ja pas les correccions perquè algun editor les aprovi.

    2.    F3niX va dir

      No puc canviar, l'hi deixo a algun editor.

      Salutacions.

      1.    neysonv va dir

        Envia-li un mail a un editor amb el tutorial corregit. pots enviar a l'electrònic de @nano que és un dels editors
        mailto: nano.world.contact@gmail.com
        siusplau no deixis el tutorial així
        salutacions

  3.   Germán va dir

    Em crida l'atenció una cosa: per què fas servir «from import *» en el codi?

    Salutacions!

    1.    F3niX va dir

      És la forma correcta d'importar, a l'importar així li dius que class especifica de l'mòdul vols importar, i no flames a l'mòdul complet.

      Salutacions.

      1.    Germán va dir

        Em sembla mig confús això. A més, no és recomanat en el PEP8:

        «Wildcard imports (from module import *) should be avoided, es they make it unclear which names are present in the namespace, confusing both readers and many automated tools ...»

        1.    F3niX va dir

          M'he guiat mes que tot per codis professionals, com ara Ninja-Ide, pots veure el codi aca: https://github.com/ninja-ide/ninja-ide/blob/master/ninja_ide/core/ipc.py, Aquesta fet en PyQt també, però de qualsevol formal no hi ha res t'obligui a usar una forma o l'altra.

          Aquí pots veure una discussió en StackOverflow, sobre això:

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

          Allà esmenten pros i contres de cada un dels estils.

          1.    F3niX va dir

            a ok disculpa no et vaig entendre, això ho se, només ho vaig fer perquè no anava a donar una explicació de cada element de color QApplication, QWidget, llavors generalitzi però tens tota la raó.

            Disculpa el malentès.

          2.    Germán va dir

            No, no vas entendre o no vas prestar atenció ... em refereixo a fer servir «from module import *», és a dir, em refereixo a l' «asterisc» ... en aquest post d'StackOverflow estan parlant d'una altra cosa, però igual el recalquen:

            «Either method is acceptable, but do not use from module import *.»

            S'entén ara?

          3.    felipe va dir

            Té raó German. De què et serveix el from module import si importes tot el contingut amb el asterisc, per a això import module. Slds igual valent post.

          4.    Germán va dir

            Ahh bo, ara entenc ... de totes maneres no em portis molt l'apunt, jo també sóc un iniciante en Python. Si et passes pel meu bloc, vas a veure que vaig fer un post simiilar a el teu però amb Gtk +3 usant PyGObject.

            Salutacions i gràcies!

        2.    F3niX va dir

          Aquí deixo el Pep8, en espanyol recomanant l'ús d'im
          És molt desaconsellable l'ús de imports relatius per importar codi d'un paquet. Utilitza sempre la ruta absoluta el paquet per a tots els imports. Fins i tot ara que el PEP 328 [7] està totalment implementat en Python 2.5, l'usar imports relatius es desaconsella seriosament; els imports absoluts són més portables i normalment més llegibles.

          Quan imports una classe d'un mòdul, normalment és correcte fer això
          from myclass import MyClass
          from foo.bar.yourclass import YourClass

          Salutacions

          1.    caçador va dir

            Llegeixin aquest: http://stackoverflow.com/questions/3615125/should-wildcard-import-be-avoided

            Alex Martelli (core pi developer) recomana una cosa així:


            from PyQt4 import QtCore, QtGui

  4.   MSX va dir

    Em vaig quedar amb ganes de més, per quan la 2a part !?
    Salutacions 🙂

  5.   eliotime3000 va dir

    Molt bon tutorials, a més que pugui ser que sigui més còmode per programar.

  6.   caçador va dir

    Aqui un exemple d'una interfície des de zero (sense usar QtDesigner).

    https://github.com/xr09/metrocontador

    1.    F3niX va dir

      Excel·lent l'app dhunter, aquí ni sabem el que ens cobren per l'electricitat, jaja salutacions.

      1.    caçador va dir

        Gràcies, és una d'aquestes apps que un fa per a ús personal i serveix als altres. Aquí a Cuba el rebut ve desglossat amb la tarifa, és fàcil copiar l'algoritme.

  7.   José Eloy va dir

    Estaré molt a l'pendent d'aquest curs. Des de fa temps estic interessat en fer aplicacions multiplataforma i crec que la combinació Python + QT / pyside és una magnífica opció. Salutacions i felicitats per la iniciativa

  8.   Bryan Rodríguez va dir

    Vaig seguir tots els passos exactament com dius però quan va executar l'aplicació app1.py a la terminal em diu Traceback (most recent call last):
    File «app1.py», línia 1, in
    from PySide.QtGui import *
    ImportError: No module named PySide.QtGui. ¿A què es deu ?.

    1.    felipe va dir

      això és per que aquestes usant una versió de python com interpreti per defecte, però no tens instal·lat el pyside per a aquesta versió.

      Prova afegint a l'inici de l'fitxer:
      #! Usr / bin / python3
      o si no
      #! Usr / bin / python2

      Et recomano facis servir Eclipse amb pydev i configuris bé el interpreti.
      slds

      1.    felipe va dir

        #! / Usr / bin / python3
        o si no
        #! / Usr / bin / python2

        1.    F3niX va dir

          Pyside encara no és compatible amb Python3, vés amb compte amb això, i segon verifica els imports mitjançant la consola interactiva de Python, així saps que tens o no instal·lat, també instal·la pip.

          1.    Bryan Rodríguez va dir

            Com ho faig ?.

          2.    F3niX va dir

            En una consola fa servir «Python», de tota manera et recomano entrar a la biblioteca que deixi abjo en el post i baixar «python per a tots», necessites mes base.

            Salutacions i Sort.

          3.    Bryan Rodríguez va dir

            Moltíssimes gràcies, em va servir de molta ajuda.

          4.    Maurici Tobares va dir

            mira amic F3niX vaig trobar això, sembla que per python 3.3.2 sobre windows (que és el que jo tinc fins la setmana que ve) tenen binaris per a 32 bits i 64 bits, jo vaig provar el teu exemple i funciona amb python 3.3.2 i utilitzo el PyScripter que et instal·la diferents entorns, si obriu el de python 3 et executa els scripts com python 3 i si obriu el de 2.7 els executa com 2.7 i aixi (lògicament tenes de tenir instal·lat aquesta versió de python ... es sobre s'entén)

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

            ahi et deixo, chusmealo, potser li serveix a algú mes 😀

      2.    Bryan Rodríguez va dir

        Em dóna el mateix error.

        1.    Germán va dir

          Tenés instal·lat pyside?

          1.    Bryan Rodríguez va dir

            El tinc instal·lat.

        2.    felipe va dir

          I proba amb PyQT4 instal·la-i després canvia les línies de pyside per PyQT4 o PyQt4, i dóna-li executar. jojo. Fes servir l'eclipsi. Sort.

          1.    Bryan Rodríguez va dir

            Com faig això ?.

  9.   karlinux va dir

    Moltes garcias !!! Esperant el segon capítol

    1.    F3niX va dir

      Per a aquest divendres potser el publiqui (La universitat em té una mica full) una salutació.

  10.   MauriciTobares va dir

    Amic F3nIX estic esperant el seu tutorial N ° 2, 3, 4 ... N jejeje

    ja tinc la meva elegantíssim linux instal·lat amb el pyside esperant i tot !!!

    a veure quan s'anima a mostrar algun nou Estatut 😀

    1.    F3niX va dir

      Disculpa amic, el tinc en esborranys però el treball i els estudis no m'han donat temps, prometo treure alguna cosa aquesta setmana.

      Un gran salutació

  11.   Dante va dir

    Hola, des de fa temps que m'interessa aprendre Python però tinc certs dubtes. El que vull és fer una aplicació per millorar una mica el procés d'informació de l'empresa familiar a on treballo, voldria fer alguna cosa per a windows, amb finestres en un primer moment, treballaria TDO en una sola pc i després que es pugui connectar via internet a la base de dades a la qual es connectarien un parell d'ordinadors. Hi ha molta diversitat pel que fa a fer donar-li GUI a l'aplicacion i això em mareja. ¿Que em recomanes per donar-li un aspecte modern i atractiu? També faria alguns gràfics estadístics i imprimir informes, ¿que puc fer servir per a tal fi ?. Salutacions

  12.   jorge va dir

    hola molt bo el teu post, tinc una preguntica jo podria vendre el meu app feta amb pyside sense cap problema?

    1.    F3niX va dir

      Bé les llicències sempre són una bogeria, però les llicències de programari lliure també et permeten vendre programari, el que passa és que la GPL, t'obliga a distribuir el codi a diferència de la LGPL, que no t'obliga a fer-ho.

      De totes maneres en això de les llicències no sóc expert.

      Salutacions.