Första stegen med Python + Qt # 1

Denna handledning fokuserar på att lära sig användningen av QT-ramverket med Python som programmeringsspråk, för detta kan vi använda både PySide och PyQt, men i den här guiden kommer vi att använda PySide eftersom författaren till den här guiden gillar LGPL PySide-licensen bättre. än GPL eller PyQt Commercial.

Först ... Vad är Python?

Enligt Wikipedia:

"Python är ett mycket högt tolkat programmeringsspråk vars filosofi betonar mycket ren syntax och gynnar läsbar kod."

Python är ett programmeringsspråk för multipradigm, så det stöder olika pythonprogrammeringsparadigmer, till exempel stöder det: Object Oriented Programming (OOP), Imperative Programming (Structured) och i mindre utsträckning Funktionell programmering.

Bara det?

Nej, det är också ett dynamiskt skrivspråk, vilket innebär att python tillåter oss att tilldela olika typer av värden till samma variabel under genomförandet av programmet, vissa ser det som en fördel, andra som en nackdel, se själv .

Förutom det ovan nämnda tillåter Python oss (som många andra) att programmera både i webbmiljön och på webbdatoren, det är också plattform, för närvarande stöder det Gnu / Linux, Windows, Mac osx, Android (Om du måste nämna dem för din modifiering).

Vad är QT?

QT är ett ramverk med flera plattformar som ursprungligen utvecklats av Nokia för att senare säljas till Digia, som används för applikationsutveckling, det är skrivet i C ++ men kan användas på andra språk genom bindningar (i vårt fall PySide eller PyQt)

Skillnader mellan PySide och PyQt

huvudsakligen

  • Licens, PySide licensieras under villkoren i LGPL och PyQT är under villkoren i GPL eller under en kommersiell licens, så vi skulle behöva betala om vi skapade en stängd ansökan.
  • PySide skapas av Nokia och PyQt av RiverBank.
  • PySide sparar oss besväret med att använda STR varje gång vi använder QString för vart och ett av QT-objekten.

Vi kan beskriva de fullständiga ändringarna Här.

preparatet:

Vi installerar Qt:

Om vi ​​har en distro med Kde borde vi redan ha det vi behöver, om inte:

sudo apt-get installera qt4-dev-tools

Vi installerar PySide:

sudo apt-get install pyside pyside-tools

Vår första Python + QT-applikation

Vi går till vår favorittextredigerare, jag rekommenderar att du installerar sublime-text2, men du kan använda den du föredrar, och vi skriver följande kod och sparar den med det namn som vi vill alltid sluta med tillägget ".py" , Jag sparar som app1.py:

3

Se kod

Vi kör det från konsolen så här:

python app1.py

Det här fönstret ska visas

2

Bara det, för om du bara hade en konsol tidigare, vad klagar du på? Vad förväntade du dig, en Erp? kom igen man, något börjar.

Låt oss nu förklara koden:

from PySide.QtGui import *

from sys import exit, argv

Här importerar vi de nödvändiga modulerna för PySide-körning.

app = QApplication(argv)

Vi skapar Qapplication-instansen med namnet app.

window = Qwidget()

Vi skapar QWidget () -instansen.

window.setWindowTitle("Primera App PySide")

Vi kör metoden setWindowTitle, som tar emot en sträng som en parameter för att "ställa in" titeln på vår Qwidget.

window.show()

Vi visar vårt fönster

exit(app.exec_())

äntligen utför vi den oändliga körcykeln för vår QApplication ().

tack

Tack för dem som har följt mig här och varit till nytta. För nästa handledning kommer jag att förklara hur vi kan designa våra fönster med QT Designer och importera dem till våra projekt.

Dessutom lägger jag till länken till forumet desde linux där jag har ett litet tema med ett litet bibliotek med python-tutorials och guider, som innehåller olika termer inklusive:

Grundläggande Python-självstudier

wxPython

PyQt och PySide

Django

web2py

Vetenskaplig programmering i python.

Och många fler.

LÄNKA TILL FORUMET

Jag hoppas att de tjänar dig, jag säger adjö, som alltid ett nöje att tillhöra denna underbara gemenskap.


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   @ förtroende17 sade

    Tack för inlägget!

  2.   Annubis sade

    2 saker:

    1. Qt utvecklades inte ursprungligen av Nokia utan av Trolltech som senare köptes av Nokia. Den senare sålde sedan Qt till Digia.
    2. Bilden i det första applikationsexemplet matchar inte koden.

    Tack för handledningen, jag följer den 🙂

    1.    f3niX sade

      Du har helt rätt. Jag saknade det. Och det andra du också har rätt är att jag ändrade det för att göra det lättare och inte använda klassen och jag saknade modifieringen, nybörjarfel. Jag skickar redan korrigeringarna för att någon redaktör ska godkänna dem.

    2.    f3niX sade

      Jag kan inte ändra, jag lämnar det åt någon redaktör.

      Hälsningar.

      1.    neysonv sade

        Skicka en redaktör med den korrigerade handledningen via e-post. du kan skicka det till e-postmeddelandet till @nano som är en av redaktörerna
        mailto: nano.world.contact@gmail.com
        snälla lämna inte självstudien så här
        gäller

  3.   Germán sade

    En sak slår mig: varför använder du "från import *" i din kod?

    Hälsningar!

    1.    f3niX sade

      Det är rätt sätt att importera, när du importerar så här berättar du vilken specifik klass av modulen du vill importera och du ringer inte hela modulen.

      Hälsningar.

      1.    Germán sade

        Jag tycker att den här typen av förvirrande. Dessutom rekommenderas det inte i PEP8:

        "Import av jokertecken (från modulimport *) bör undvikas, eftersom de gör det oklart vilka namn som finns i namnområdet, vilket förvirrar både läsare och många automatiska verktyg ..."

        1.    f3niX sade

          Jag har främst blivit guidad av professionella koder, som Ninja-Ide, du kan se koden här: https://github.com/ninja-ide/ninja-ide/blob/master/ninja_ide/core/ipc.pyDet görs också i PyQt, men på något sätt finns det inget som tvingar dig att använda den ena eller den andra formen.

          Här kan du se en diskussion om StackOverflow, om detta:

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

          Där nämner de fördelar och nackdelar med varje stil.

          1.    f3niX sade

            ok förlåt att jag inte förstod dig, jag vet det, jag gjorde det bara för att jag inte skulle ge en förklaring av varje QApplication, QWidget-element, så generalisera men du har helt rätt.

            Ursäkta missförståndet.

          2.    Germán sade

            Nej, du förstod inte eller uppmärksammade inte ... Jag menar att använda «från modulimport *», det vill säga jag menar «asterisken» ... i det StackOverflow-inlägget pratar de om något annat, men de betonar det ändå:

            "Endera metoden är acceptabel, men använd inte från modulimport *."

            Förstås det nu?

          3.    felipe sade

            Tyska har rätt. Vilken nytta är importen från modul om du importerar allt innehåll med asteric för den importmodulen. Slds lika trevligt inlägg.

          4.    Germán sade

            Ahh, nu förstår jag ... hur som helst, ta mig inte för lång tid, jag är också nybörjare i Python. Om du stannar vid min blogg kommer du att se att jag gjorde ett inlägg som liknar ditt men med Gtk + 3 med PyGObject.

            Hälsningar och tack!

        2.    f3niX sade

          Här lämnar jag Pep8, på spanska rekommenderar jag användning av im
          Det är mycket tillrådligt att använda relativ import för att importera kod från ett paket. Använd alltid paketets absoluta väg för all import. Även nu när PEP 328 [7] är fullt implementerat i Python 2.5 avskräcks allvarligt användning av relativ import; absolut import är mer bärbar och vanligtvis mer läsbar.

          När du importerar en klass från en modul är det vanligtvis korrekt att göra detta
          från myclass importera MyClass
          från foo.bar.yourclass importerar YourClass

          hälsningar

          1.    djägare sade

            Läs detta: http://stackoverflow.com/questions/3615125/should-wildcard-import-be-avoided

            Alex Martelli (core py-utvecklare) rekommenderar något så här:


            from PyQt4 import QtCore, QtGui

  4.   MSX sade

    Jag ville ha mer, för när den andra delen!?
    Hälsningar 🙂

  5.   eliotime3000 sade

    Mycket bra handledning, det kan också vara bekvämare att programmera.

  6.   djägare sade

    Här är ett exempel på ett gränssnitt från grunden (utan att använda QtDesigner).

    https://github.com/xr09/metrocontador

    1.    f3niX sade

      Dhunter-appen är utmärkt, här vet vi inte ens hur mycket de tar betalt för el, haha ​​hälsningar.

      1.    djägare sade

        Tack, det är en av de appar som man gör för personligt bruk och serverar andra. Här på Kuba är kvittot uppdelat med räntan, det är enkelt att kopiera algoritmen.

  7.   Jose Eloy sade

    Jag kommer att vara mycket medveten om den här kursen. Jag har varit intresserad av plattformsapplikationer under lång tid och jag tycker att Python + QT / Pyside-kombinationen är ett bra alternativ. Hälsningar och gratulationer för initiativet

  8.   Bryan Rodriguez sade

    Jag följde alla steg exakt som du säger, men när jag kör app1.py-applikationen i terminalen berättar det mig Traceback (senaste samtalet senast):
    Fil "app1.py", rad 1, in
    från PySide.QtGui import *
    ImportError: Ingen modul som heter PySide.QtGui. För vad är det här ?.

    1.    felipe sade

      det beror på att du använder en version av python som standardtolk, men du har inte installerat pyside för den versionen.

      Försök lägga till i början av filen:
      #! usr / bin / python3
      annars
      #! usr / bin / python2

      Jag rekommenderar att du använder Eclipse med pydev och konfigurerar tolken väl.
      SLD

      1.    felipe sade

        #! / usr / bin / python3
        annars
        #! / usr / bin / python2

        1.    f3niX sade

          PySide är ännu inte kompatibelt med Python3, var försiktig med det, och för det andra kontrollerar den importen via den interaktiva pythonkonsolen, så du vet att du har den installerad eller inte, den installerar också pip.

          1.    Bryan Rodriguez sade

            Hur verifierar jag det?

          2.    f3niX sade

            I en konsol använder du "Python", ändå rekommenderar jag att du går in i biblioteket som jag lämnade nedan i inlägget och laddar ner "python för alla", du behöver mer bas.

            Hälsningar och tur.

          3.    Bryan Rodriguez sade

            Tack så mycket, det var till stor hjälp för mig.

          4.    Mauricio Tobares sade

            se vän F3niX Jag hittade det här, det verkar som att för python 3.3.2 på windows (vilket är vad jag har fram till nästa vecka) har de binärfiler för 32 bitar och 64 bitar, jag försökte ditt exempel och det fungerar med python 3.3.2 Jag använder PyScripter som installerar olika miljöer, om du öppnar python 3 körs skript som python 3 och om du öppnar 2.7 körs de som 2.7 och så vidare (logiskt sett måste du ha den versionen av python installerad ... det är förstått)

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

            Jag lämnar dig där, skvaller, kanske kommer det att tjäna någon annan 😀

      2.    Bryan Rodriguez sade

        Jag får samma fel.

        1.    Germán sade

          Har du PySide installerat?

          1.    Bryan Rodriguez sade

            Jag har den installerad.

        2.    felipe sade

          Och försök med PyQT4 installera den och ändra sedan PySide-linjerna för PyQT4 eller PyQt4 och ge den att köra. jojo. Använd förmörkelsen. Tur.

          1.    Bryan Rodriguez sade

            Hur gör jag det?.

  9.   karlinux sade

    Tack så mycket !!! Väntar på det andra kapitlet

    1.    f3niX sade

      För denna fredag ​​kan jag publicera den (universitetet har mig lite full) hälsningar.

  10.   Mauricio Tobares sade

    Vän F3nIX Jag väntar på din handledning nr 2, 3, 4 ... N hehehe

    Jag har redan min mycket eleganta Linux installerad med PySide väntar och allt!

    Låt oss se när han uppmuntras att visa en ny handledare 😀

    1.    f3niX sade

      Ursäkta mig vän, jag har det i utkast men arbete och studier har inte gett mig tid, jag lovar att få ut något den här veckan.

      En stor hälsning

  11.   Dante sade

    Hej, jag har varit intresserad av att lära mig Python länge men jag tvivlar. Vad jag vill är att göra en ansökan för att förbättra informationsprocessen för familjeföretaget där jag arbetar, jag skulle vilja göra något för windows, med windows först, det skulle fungera allt på en enda dator och sedan att det kan anslutas via internet till den databas som ett par datorer skulle ansluta till. Det finns mycket mångfald när det gäller GUIing av applikationen och det gör mig yr. Vad rekommenderar du för att ge det ett modernt och attraktivt utseende? Jag skulle också göra statistisk grafik och skriva ut rapporter, vad kan jag använda för det? Skål

  12.   Jorge sade

    Hej, mycket bra, ditt inlägg, jag har en fråga, kan jag sälja min app gjord med pyside utan problem?

    1.    f3niX sade

      Tja, licenser är alltid galna, men gratis mjukvarulicenser tillåter dig också att sälja programvara. Vad som händer är att GPL tvingar dig att distribuera koden, till skillnad från LGPL, vilket inte tvingar dig att göra det.

      I vilket fall som helst är jag inte expert på licensiering.

      Hälsningar.