Første trin med Python + Qt # 1

Denne tutorial er fokuseret på at undervise i brugen af ​​QT-rammen ved hjælp af Python som programmeringssprog, til dette kan vi bruge både PySide og PyQt, men i denne tutorial bruger vi PySide, fordi forfatteren af ​​denne tutorial kan lide LGPL PySide-licensen bedre. end GPL eller PyQt Commercial.

Først ... Hvad er Python?

Ifølge Wikipedia:

"Python er et meget højt tolket programmeringssprog, hvis filosofi understreger meget ren syntaks og bidrager til læsbar kode."

Python er et programmeringssprog med flere niveauer, så det understøtter forskellige paradigmer for pythonprogrammering, for eksempel understøtter det: Objektorienteret programmering (OOP), Imperativ programmering (struktureret) og i mindre grad funktionel programmering.

Kun det?

Nej, det er også et dynamisk typesprog, hvilket betyder, at python giver os mulighed for at tildele forskellige typer værdier til den samme variabel under udførelsen af ​​programmet, nogle ser det som en fordel, andre som en ulempe, se selv.

Ud over det, der allerede er nævnt, tillader Python os (som mange andre), at programmere både i webmiljøet og på web-skrivebordet, det er også på tværs af platforme, i øjeblikket understøtter det Gnu / Linux, Windows, Mac osx, Android (hvis du har brug for at nævne dem til modifikation).

Hvad er QT?

QT er en multiplatform-ramme, oprindeligt udviklet af Nokia, der senere skal sælges til Digia, som bruges til applikationsudvikling, den er skrevet i C ++, men kan bruges på andre sprog gennem bindinger (i vores tilfælde PySide eller PyQt )

Forskelle mellem PySide og PyQt

hovedsageligt

  • Licens, PySide er licenseret under betingelserne i LGPL, og PyQT er under vilkårene i GPL eller under en kommerciel licens, så vi bliver nødt til at betale i tilfælde af oprettelse af en lukket ansøgning.
  • PySide er oprettet af Nokia og PyQt af RiverBank.
  • PySide sparer os besværet med at bruge STR hver gang vi bruger QString for hvert af QT-objekterne.

Vi kan specificere de komplette ændringer Her.

forberedelse:

Vi installerer Qt:

Hvis vi har en distro med Kde, burde vi allerede have det, vi har brug for, hvis ikke:

sudo apt-get installer qt4-dev-tools

Vi installerer PySide:

sudo apt-get install pyside pyside-tools

Vores første Python + QT-applikation

Vi går til vores foretrukne teksteditor, jeg anbefaler, at du installerer sublime-text2, men du kan bruge den, du foretrækker, og vi skriver følgende kode og gemmer den med det navn, vi altid vil slutte med udvidelsen ".py" Jeg vil gemme som app1.py:

3

Se kode

Vi kører det fra konsollen sådan:

python app1.py

Dette vindue skal vises

2

Kun det, for hvis du kun havde en konsol før, hvad klager du over? Hvad forventede du, en Erp? kom mand for noget begynder.

Lad os nu forklare koden:

from PySide.QtGui import *

from sys import exit, argv

Her importerer vi de nødvendige moduler til PySide-udførelse.

app = QApplication(argv)

Vi opretter Qapplication-instansen med navnet app.

window = Qwidget()

Vi opretter forekomsten af ​​QWidget ().

window.setWindowTitle("Primera App PySide")

Vi udfører metoden setWindowTitle, som modtager en streng som parameter for at "indstille" titlen på vores Qwidget.

window.show()

Vi viser vores vindue

exit(app.exec_())

endelig udfører vi den uendelige udførelsescyklus af vores QApplication ().

Tak

Tak for dem, der har fulgt mig her og har været nyttige. Til den næste vejledning vil jeg forklare, hvordan vi designer vores vinduer med QT Designer og importerer dem til vores projekter.

Derudover tilføjer jeg linket til forummet desde linux hvor jeg har et lille tema med et lille bibliotek af python-tutorials og guider, der indeholder forskellige termer, herunder:

Grundlæggende Python-selvstudier

wxPython

PyQt og PySide

Django

web2py

Videnskabelig programmering i python.

Og mange flere.

LINK TIL FORUMET

Jeg håber de tjener dig, jeg siger farvel som altid en fornøjelse at høre til dette vidunderlige samfund.


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   @ tillid17 sagde han

    Tak for indlægget!

  2.   annubis sagde han

    2 ting:

    1. Qt blev ikke oprindeligt udviklet af Nokia, men af ​​Trolltech, som senere blev købt af Nokia. Sidstnævnte solgte derefter Qt til Digia.
    2. Billedet i det første applikationseksempel svarer ikke til koden.

    Tak for vejledningen, jeg følger den 🙂

    1.    f3niX sagde han

      Du har helt ret, jeg savnede det. Og den anden ting, du også har ret, er at jeg ændrede det for at gøre det lettere og ikke bruge klasse, og jeg savnede ændringen, begynderfejl. Jeg har allerede bestået rettelserne, som en redaktør kan godkende.

    2.    f3niX sagde han

      Jeg kan ikke ændre det, jeg overlader det til en redaktør.

      Greetings.

      1.    neysonv sagde han

        E-mail en redaktør med den korrigerede vejledning. du kan sende det til e-mailen til @nano, der er en af ​​redaktørerne
        mailto: nano.world.contact@gmail.com
        vær venlig at ikke forlade vejledningen sådan
        hensyn

  3.   Tysk sagde han

    Én ting slår mig: hvorfor bruger du "fra import *" i din kode?

    Greetings!

    1.    f3niX sagde han

      Det er den rigtige måde at importere, når du importerer sådan, fortæller du det, hvilken specifik klasse af modulet du vil importere, og du kalder ikke hele modulet.

      Greetings.

      1.    Tysk sagde han

        Jeg finder den slags forvirrende. Desuden anbefales det ikke i PEP8:

        "Import af jokertegn (fra modulimport *) bør undgås, da de gør det uklart, hvilke navne der er til stede i navneområdet, hvilket forvirrer både læsere og mange automatiserede værktøjer ..."

        1.    f3niX sagde han

          Jeg er hovedsageligt blevet styret af professionelle koder, såsom Ninja-Ide, du kan se koden her: https://github.com/ninja-ide/ninja-ide/blob/master/ninja_ide/core/ipc.pyDet gøres også i PyQt, men på nogen måde er der intet, der tvinger dig til at bruge den ene eller den anden form.

          Her kan du se en diskussion om StackOverflow om dette:

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

          Der nævner de fordele og ulemper ved hver af stilarterne.

          1.    f3niX sagde han

            ok ked af, at jeg ikke forstod dig, jeg ved det, jeg gjorde det kun, fordi jeg ikke ville give en forklaring på hvert element QApplication, QWidget, så generaliser, men du har helt ret.

            Undskyld misforståelsen.

          2.    Tysk sagde han

            Nej, du forstod det ikke, eller du var ikke opmærksom ... Jeg mener at bruge «fra modulimport *», det vil sige, jeg mener «stjernen» ... i det StackOverflow-indlæg, de taler om noget andet, men de understreger stadig det:

            "Enten metode er acceptabel, men brug ikke fra modulimport *."

            Er det forstået nu?

          3.    Felipe sagde han

            Tysk har ret. Hvad er brugen af ​​importen fra modulet, hvis du importerer alt indholdet med det asteriske til det importmodul. Slds lige så flot indlæg.

          4.    Tysk sagde han

            Ahh nå, nu forstår jeg ... alligevel, tag mig ikke for lang tid, jeg er også nybegynder i Python. Hvis du besøger min blog, vil du se, at jeg lavede et indlæg svarende til dit, men med Gtk + 3 ved hjælp af PyGObject.

            Hilsner og tak!

        2.    f3niX sagde han

          Her forlader jeg Pep8, på spansk anbefaler jeg brug af im
          Det anbefales stærkt at bruge relativ import til at importere kode fra en pakke. Brug altid pakkens absolutte sti til al import. Selv nu, hvor PEP 328 [7] er fuldt implementeret i Python 2.5, frarådes det alvorligt at bruge relativ import; absolut import er mere bærbar og normalt mere læsbar.

          Når du importerer en klasse fra et modul, er det normalt korrekt at gøre dette
          fra myclass importerer MyClass
          fra foo.bar.yourclass importerer YourClass

          hilsen

          1.    djæger sagde han

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

            Alex Martelli (core py-udvikler) anbefaler noget som dette:


            from PyQt4 import QtCore, QtGui

  4.   MSX sagde han

    Jeg ville have mere, når 2. del!?
    Hilsen 🙂

  5.   eliotime3000 sagde han

    Meget gode tutorials, plus det kan være mere behageligt at programmere.

  6.   djæger sagde han

    Her er et eksempel på en grænseflade fra bunden (uden brug af QtDesigner).

    https://github.com/xr09/metrocontador

    1.    f3niX sagde han

      Dhunter-appen er fremragende, her ved vi ikke engang, hvor meget de opkræver os for elektricitet, haha ​​hilsner.

      1.    djæger sagde han

        Tak, det er en af ​​de apps, som man laver til personlig brug og tjener andre. Her på Cuba er kvitteringen opdelt med satsen, det er let at kopiere algoritmen.

  7.   Jose Eloy sagde han

    Jeg vil være meget opmærksom på dette kursus. Jeg har været interesseret i applikationer på tværs af platforme i lang tid, og jeg synes, at Python + QT / Pyside-kombinationen er en god mulighed. Hilsner og tillykke med initiativet

  8.   Bryan Rodriguez sagde han

    Jeg fulgte alle trin nøjagtigt som du siger, men når jeg kører app1.py-applikationen i terminalen, fortæller det mig Traceback (seneste opkald sidst):
    Fil "app1.py", linje 1, i
    fra PySide.QtGui import *
    ImportError: Intet modul ved navn PySide.QtGui. For hvad er dette ?.

    1.    Felipe sagde han

      det er fordi du bruger en version af python som standardtolk, men du har ikke pysiden installeret til den version.

      Prøv at tilføje i begyndelsen af ​​filen:
      #! usr / bin / python3
      ellers
      #! usr / bin / python2

      Jeg anbefaler, at du bruger Eclipse med pydev og konfigurerer tolken godt.
      SLD'er

      1.    Felipe sagde han

        #! / usr / bin / python3
        ellers
        #! / usr / bin / python2

        1.    f3niX sagde han

          PySide er endnu ikke kompatibel med Python3, vær forsigtig med det, og for det andet, tjek importen gennem den interaktive python-konsol, så du ved, at du har den installeret eller ej, den installerer også pip.

          1.    Bryan Rodriguez sagde han

            Hvordan bekræfter jeg det?

          2.    f3niX sagde han

            I en konsol skal du bruge "Python", alligevel anbefaler jeg, at du går ind i biblioteket, som jeg har efterladt i posten, og downloader "python til alle", du har brug for mere base.

            Hilsner og held.

          3.    Bryan Rodriguez sagde han

            Mange tak, det var meget nyttigt for mig.

          4.    Mauricio Tobares sagde han

            se ven F3niX Jeg fandt dette, det ser ud til, at for python 3.3.2 på windows (hvilket er hvad jeg har indtil næste uge) har de binære filer til 32 bits og 64 bits, jeg prøvede dit eksempel, og det fungerer med python 3.3.2 og Jeg bruger PyScripter, der installerer forskellige miljøer, hvis du åbner python 3, kører den scripts som python 3, og hvis du åbner 2.7, udfører den dem som 2.7 og så videre (logisk skal du have den version af python installeret ... det forstås)

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

            Jeg lader dig være der, sladder, måske tjener det en anden 😀

      2.    Bryan Rodriguez sagde han

        Jeg får den samme fejl.

        1.    Tysk sagde han

          Har du installeret PySide?

          1.    Bryan Rodriguez sagde han

            Jeg har det installeret.

        2.    Felipe sagde han

          Og prøv med PyQT4 at installere det, og skift derefter PySide-linjerne til PyQT4 eller PyQt4, og lad det køre. jojo. Brug formørkelsen. Held.

          1.    Bryan Rodriguez sagde han

            Hvordan gør jeg det?.

  9.   karlinux sagde han

    Mange tak !!! Venter på andet kapitel

    1.    f3niX sagde han

      Til denne fredag ​​kan jeg offentliggøre hilsnerne (universitetet har mig lidt fulde).

  10.   Mauricio Tobares sagde han

    Ven F3nIX Jeg venter på din tutorial N ° 2, 3, 4 ... N hehehe

    Jeg har allerede min meget elegante linux installeret med PySide venter og alt!

    Lad os se, hvornår han opfordres til at vise en ny vejleder 😀

    1.    f3niX sagde han

      Undskyld mig ven, jeg har det i kladder, men arbejde og studier har ikke givet mig tid, jeg lover at få noget ud i denne uge.

      En stor hilsen

  11.   Dante sagde han

    Hej, jeg har været interesseret i at lære Python i lang tid, men jeg er i tvivl. Hvad jeg ønsker er at lave en applikation for at forbedre lidt informationsprocessen i den familievirksomhed, hvor jeg arbejder, jeg vil gerne gøre noget for windows, med windows i første omgang, det fungerer alt sammen på en enkelt pc og derefter, at det kan forbindes via internet til den database, som et par computere vil oprette forbindelse til. Der er meget mangfoldighed med hensyn til GUIing af applikationen, og det gør mig svimmel. Hvad anbefaler du for at give det et moderne og attraktivt udseende? Jeg ville også lave nogle statistiske grafik og udskrive rapporter, hvad kan jeg bruge til det? Skål

  12.   Jorge sagde han

    Hej, meget godt dit indlæg, jeg har et spørgsmål, kunne jeg sælge min app lavet med pyside uden problemer?

    1.    f3niX sagde han

      Nå, licenser er altid vanvittige, men gratis softwarelicenser giver dig også mulighed for at sælge software, hvad der sker er, at GPL tvinger dig til at distribuere koden, i modsætning til LGPL, som ikke tvinger dig til at gøre det.

      Under alle omstændigheder er jeg ikke ekspert på licensering.

      Greetings.