Eerste stappen met Python + Qt # 1

Deze tutorial is gericht op het aanleren van het gebruik van het QT-framework met Python als programmeertaal, hiervoor kunnen we zowel PySide als PyQt gebruiken, maar in deze tutorial zullen we PySide gebruiken omdat de auteur van deze tutorial de LGPL PySide-licentie beter vindt. dan de GPL of PyQt Commercial.

Ten eerste ... Wat is Python?

Volgens Wikipedia:

"Python is een zeer goed geïnterpreteerde programmeertaal waarvan de filosofie de nadruk legt op een zeer schone syntaxis en bevorderlijk is voor leesbare code."

Python is een multipadradigm-programmeertaal, dus het ondersteunt verschillende Python-programmeerparadigma's, het ondersteunt bijvoorbeeld: Object Oriented Programming (OOP), Imperative Programming (Structured) en in mindere mate Functioneel programmeren.

Alleen dat?

Nee, het is ook een dynamische typetaal, wat betekent dat we met Python verschillende soorten waarden aan dezelfde variabele kunnen toewijzen tijdens de uitvoering van het programma, sommigen zien het als een voordeel, anderen als een nadeel, kijk zelf maar.

Naast wat al is genoemd, stelt Python ons (net als vele anderen) in staat om zowel in de webomgeving als in de webdesktop te programmeren, het is ook platformonafhankelijk, momenteel ondersteunt het Gnu / Linux, Windows, Mac osx, Android (als u ze voor uw wijziging).

Wat is QT?

QT is een multiplatform framework, oorspronkelijk ontwikkeld door Nokia, om later te worden verkocht aan Digia, dat wordt gebruikt voor applicatieontwikkeling.Het is geschreven in C ++, maar kan in andere talen worden gebruikt via bindingen (in ons geval PySide of PyQt)

Verschillen tussen PySide en PyQt

hoofdzakelijk

  • Licentie, PySide is gelicentieerd onder de voorwaarden van de LGPL en PyQT valt onder de voorwaarden van de GPL of onder een commerciële licentie, dus we zouden moeten betalen in geval van het creëren van een gesloten applicatie.
  • PySide is gemaakt door Nokia en PyQt door RiverBank.
  • PySide bespaart ons de moeite om STR te gebruiken elke keer dat we de QString van elk van de QT-objecten gebruiken.

We kunnen de volledige wijzigingen gedetailleerd beschrijven Hier.

Bereiding:

We installeren Qt:

Als we een distro met Kde hebben, zouden we al moeten hebben wat we nodig hebben, zo niet:

sudo apt-get install qt4-dev-tools

We installeren PySide:

sudo apt-get install pyside pyside-tools

Onze eerste Python + QT-applicatie

We gaan naar onze favoriete teksteditor, ik raad je aan om sublime-text2 te installeren, maar je kunt degene gebruiken die je verkiest, en we typen de volgende code en slaan deze op met de naam die we willen, altijd eindigend met de extensie ".py". Ik zal opslaan als app1.py:

3

Zie Code

We draaien het als volgt vanaf de console:

python app1.py

Dit venster zou moeten verschijnen

2

Alleen dat, want als je eerder een console had, waar klaag je dan over? Wat had je verwacht, een Erp? kom op man, want er begint iets.

Laten we nu de code uitleggen:

from PySide.QtGui import *

from sys import exit, argv

Hier importeren we de benodigde modules voor PySide-uitvoering.

app = QApplication(argv)

We maken de Qapplication-instantie met de naam app.

window = Qwidget()

We maken de instantie van QWidget ().

window.setWindowTitle("Primera App PySide")

We voeren de methode setWindowTitle uit, die een String ontvangt als parameter om de titel van onze Qwidget "in te stellen".

window.show()

We laten ons raam zien

exit(app.exec_())

Ten slotte voeren we de oneindige cyclus van uitvoering van onze QApplication () uit.

bedankt

Bedankt voor degenen die mij hier zijn gevolgd en nuttig zijn geweest. Voor de volgende tutorial zal ik uitleggen hoe we onze vensters kunnen ontwerpen met QT Designer en ze in onze projecten kunnen importeren.

Daarnaast voeg ik de link naar het forum toe desde linux waar ik een klein thema heb met een kleine bibliotheek met python-tutorials en handleidingen, met verschillende termen, waaronder:

Basislessen voor Python

wxPython

PyQt en PySide

Django

web2py

Wetenschappelijk programmeren in python.

En nog veel meer.

LINK NAAR HET FORUM

Ik hoop dat ze je van dienst zijn, ik neem afscheid, zoals altijd een plezier om bij deze geweldige gemeenschap te horen.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   @ trust17 zei

    Bedankt voor de post!

  2.   annubis zei

    2 dingen:

    1. Qt is oorspronkelijk niet ontwikkeld door Nokia, maar door Trolltech, dat later door Nokia is gekocht. Deze laatste verkocht vervolgens Qt aan Digia.
    2. De afbeelding in het eerste toepassingsvoorbeeld komt niet overeen met de code.

    Bedankt voor de tutorial, ik zal hem volgen 🙂

    1.    f3niX zei

      Je hebt helemaal gelijk, ik heb het gemist. En het tweede dat je ook gelijk hebt, is dat ik het heb veranderd om het gemakkelijker te maken en geen les te gebruiken en ik heb de aanpassing gemist, beginnersfouten. Ik geef de correcties al door zodat een redacteur ze kan goedkeuren.

    2.    f3niX zei

      Ik kan het niet wijzigen, ik laat het over aan een redacteur.

      Groeten.

      1.    neysonv zei

        E-mail een redacteur met de gecorrigeerde tutorial. je kunt het sturen naar de e-mail van @nano, een van de redacteuren
        mailto: nano.world.contact@gmail.com
        verlaat de tutorial alsjeblieft niet
        groeten

  3.   Germán zei

    Eén ding valt me ​​op: waarom gebruik je "from import *" in je code?

    Groeten!

    1.    f3niX zei

      Het is de juiste manier om te importeren, wanneer je op deze manier importeert, vertel je het welke specifieke klasse van de module je wilt importeren, en je roept niet de volledige module op.

      Groeten.

      1.    Germán zei

        Ik vind dat nogal verwarrend. Bovendien wordt het niet aanbevolen in PEP8:

        "Importeren met jokertekens (van module-import *) moet worden vermeden, omdat ze het onduidelijk maken welke namen in de naamruimte aanwezig zijn, wat zowel lezers als veel geautomatiseerde tools in verwarring brengt ..."

        1.    f3niX zei

          Ik ben voornamelijk geleid door professionele codes, zoals Ninja-Ide, je kunt de code hier bekijken: https://github.com/ninja-ide/ninja-ide/blob/master/ninja_ide/core/ipc.pyHet wordt ook in PyQt gedaan, maar op geen enkele manier is er niets dat je dwingt om het ene of het andere formulier te gebruiken.

          Hier kun je een discussie over StackOverflow zien, hierover:

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

          Daar noemen ze de voor- en nadelen van elk van de stijlen.

          1.    f3niX zei

            oke sorry ik begreep je niet, dat weet ik, ik deed het alleen omdat ik niet van plan was een uitleg te geven van elk element QApplication, QWidget, en dan generaliseer maar je hebt helemaal gelijk.

            Excuses voor het misverstand.

          2.    Germán zei

            Nee, je hebt het niet begrepen of je hebt er niet op gelet ... ik bedoel het gebruik van «from module import *», dat wil zeggen, ik bedoel de «asterisk» ... in dat StackOverflow-bericht hebben ze het over iets anders, maar ze benadrukken het nog steeds:

            "Beide methoden zijn acceptabel, maar gebruik deze niet vanuit module-import *."

            Is het nu begrepen?

          3.    felipe zei

            Duits heeft gelijk. Wat heb je aan de from module import als je alle inhoud importeert met de asteric, voor die import module. Slds net zo leuk bericht.

          4.    Germán zei

            Nou ja, nu begrijp ik het ... in ieder geval, doe me niet te lang uit, ik ben ook een beginner in Python. Als je mijn blog doorneemt, zul je zien dat ik een bericht heb gemaakt dat lijkt op het jouwe, maar met Gtk + 3 met PyGObject.

            Groeten en bedankt!

        2.    f3niX zei

          Hier laat ik de Pep8 achter, in het Spaans beveel ik het gebruik van im aan
          Het is sterk af te raden om relatieve invoer te gebruiken om code uit een pakket te importeren. Gebruik altijd het absolute pad van het pakket voor alle invoer. Zelfs nu PEP 328 [7] volledig is geïmplementeerd in Python 2.5, wordt het gebruik van relatieve import sterk afgeraden; absolute invoer is draagbaarder en meestal beter leesbaar.

          Bij het importeren van een klasse uit een module is het meestal correct om dit te doen
          van myclass importeer MyClass
          van foo.bar.yourclass importeer YourClass

          groeten

          1.    djager zei

            Lees dit: http://stackoverflow.com/questions/3615125/should-wildcard-import-be-avoided

            Alex Martelli (core py-ontwikkelaar) beveelt zoiets als dit aan:


            from PyQt4 import QtCore, QtGui

  4.   msx zei

    Ik wilde meer, want toen het 2e deel!?
    Groeten 🙂

  5.   eliotime3000 zei

    Zeer goede tutorials, en het is misschien comfortabeler om te programmeren.

  6.   djager zei

    Hier is een voorbeeld van een geheel nieuwe interface (zonder QtDesigner te gebruiken).

    https://github.com/xr09/metrocontador

    1.    f3niX zei

      De dhunter-app is uitstekend, hier weten we niet eens hoeveel ze ons aanrekenen voor elektriciteit, haha ​​groetjes.

      1.    djager zei

        Bedankt, het is een van die apps die men maakt voor persoonlijk gebruik en anderen dient. Hier in Cuba wordt de bon uitgesplitst met het tarief, het algoritme is gemakkelijk te kopiëren.

  7.   Jose Eloy zei

    Ik zal me zeer bewust zijn van deze cursus. Ik ben al heel lang geïnteresseerd in platformonafhankelijke applicaties en ik denk dat de combinatie Python + QT / Pyside een geweldige optie is. Groeten en felicitaties voor het initiatief

  8.   Bryan Rodriguez zei

    Ik volgde alle stappen precies zoals je zegt, maar wanneer ik de app1.py-applicatie in de terminal start, vertelt het me Traceback (meest recente oproep laatste):
    Bestand "app1.py", regel 1, in
    van PySide.QtGui import *
    ImportError: geen module met de naam PySide.QtGui. Voor wat is dit ?.

    1.    felipe zei

      dat komt omdat je een versie van python gebruikt als de standaardinterpreter, maar je hebt de pyside niet geïnstalleerd voor die versie.

      Probeer aan het begin van het bestand toe te voegen:
      #! usr / bin / python3
      of anders
      #! usr / bin / python2

      Ik raad je aan om Eclipse met pydev te gebruiken en de tolk goed te configureren.
      SLD's

      1.    felipe zei

        #! / usr / bin / python3
        of anders
        #! / usr / bin / python2

        1.    f3niX zei

          PySide is nog niet compatibel met Python3, wees daar voorzichtig mee, en ten tweede controleert het de invoer via de interactieve python-console, dus je weet dat je het hebt geïnstalleerd of niet, het installeert ook pip.

          1.    Bryan Rodriguez zei

            Hoe verifieer ik het?

          2.    f3niX zei

            Gebruik in een console "Python", hoe dan ook, ik raad je aan om de bibliotheek in te voeren die ik hieronder in de post heb achtergelaten en "python voor iedereen" te downloaden, je hebt meer basis nodig.

            Groeten en geluk.

          3.    Bryan Rodriguez zei

            Heel erg bedankt, het was erg nuttig voor mij.

          4.    Mauricio Tobares zei

            kijk vriend F3niX Ik heb dit gevonden, het lijkt erop dat voor python 3.3.2 op windows (wat ik heb tot volgende week) ze binaries hebben voor 32 bits en 64 bits, ik heb je voorbeeld geprobeerd en het werkt met python 3.3.2 en ik gebruik De PyScripter die verschillende omgevingen installeert, als je de python 3 opent, voert hij de scripts uit als python 3 en als je de 2.7 opent, voert hij ze uit als 2.7 enzovoort (logischerwijs moet je die versie van python hebben geïnstalleerd ... het is duidelijk)

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

            Ik laat je daar achter, roddelen, misschien zal het iemand anders dienen 😀

      2.    Bryan Rodriguez zei

        Ik krijg dezelfde foutmelding.

        1.    Germán zei

          Heb je PySide geïnstalleerd?

          1.    Bryan Rodriguez zei

            Ik heb het geïnstalleerd.

        2.    felipe zei

          En probeer het met PyQT4 te installeren en verander vervolgens de PySide-regels voor PyQT4 of PyQt4, en geef het run. jojo. Gebruik de eclips. Geluk.

          1.    Bryan Rodriguez zei

            Hoe doe ik dat?.

  9.   karlinux zei

    Veel dank !!! Wachten op het tweede hoofdstuk

    1.    f3niX zei

      Voor aanstaande vrijdag mag ik het publiceren (de universiteit heeft me een beetje vol) groeten.

  10.   Mauricio Tobares zei

    Vriend F3nIX Ik wacht op je les N ° 2, 3, 4… N hehehe

    Ik heb mijn zeer elegante linux al geïnstalleerd met PySide te wachten en zo!

    Eens kijken wanneer hij wordt aangemoedigd om een ​​nieuwe tutor te laten zien 😀

    1.    f3niX zei

      Excuseer me vriend, ik heb het in de klad maar werk en studie hebben me geen tijd gegeven, ik beloof dat ik deze week iets uit de kast zal halen.

      Een grote groet

  11.   Dante zei

    Hallo, ik ben al heel lang geïnteresseerd in het leren van Python, maar ik heb enkele twijfels. Wat ik wil is een applicatie maken om het informatieproces van het familiebedrijf waar ik werk een beetje te verbeteren, ik zou graag iets willen doen voor windows, met windows in eerste instantie, het zou allemaal op een enkele pc werken en dan dat het via internet kan worden aangesloten naar de database waarmee een paar computers verbinding zouden maken. Er is veel diversiteit in termen van GUIing van de applicatie en daar word ik duizelig van. Wat raadt u aan om het een moderne en aantrekkelijke uitstraling te geven? Ik zou ook wat statistische grafieken maken en rapporten afdrukken, wat kan ik daarvoor gebruiken? Proost

  12.   jorge zei

    Hallo, heel goed je bericht, ik heb een vraag. Kan ik mijn app gemaakt met pyside probleemloos verkopen?

    1.    f3niX zei

      Welnu, licenties zijn altijd gek, maar met vrije softwarelicenties kun je ook software verkopen. Wat er gebeurt, is dat de GPL je dwingt de code te verspreiden, in tegenstelling tot de LGPL, die je niet dwingt om dit te doen.

      Ik ben in ieder geval geen expert op het gebied van licenties.

      Groeten.