Eerste stappe met Python + Qt # 1

Hierdie handleiding is gefokus op die gebruik van die QT-raamwerk met behulp van Python as programmeertaal, hiervoor kan ons beide PySide en PyQt gebruik, maar in hierdie handleiding sal ons PySide gebruik omdat die skrywer van hierdie handleiding die LGPL PySide-lisensie beter hou. as die GPL of PyQt Commercial.

Eerstens ... Wat is Python?

Volgens Wikipedia:

"Python is 'n baie hoë geïnterpreteerde programmeertaal waarvan die filosofie baie skoon sintaksis beklemtoon en leesbare kode bevoordeel."

Python is 'n meertalige programmeertaal, dus ondersteun dit verskillende luislangprogrammeringsparadigmas, byvoorbeeld: Object Oriented Programming (OOP), Imperative Programming (Structured) en in mindere mate Funksionele programmering.

Net dit?

Nee, dit is ook 'n dinamiese tiktaal, wat beteken dat luislang ons in staat stel om verskillende soorte waardes aan dieselfde veranderlike toe te ken tydens die uitvoering van die program, sommige sien dit as 'n voordeel, ander as 'n nadeel, sien self .

Benewens die bogenoemde, laat Python ons toe (soos baie ander) om beide in die webomgewing en op die webwerktuig te programmeer, dit is ook platformonafhanklik, tans ondersteun dit Gnu / Linux, Windows, Mac osx, Android (as u moet dit noem vir u verandering).

Wat is QT?

QT is 'n meervoudige raamwerk, oorspronklik ontwikkel deur Nokia, om later aan Digia te verkoop, wat gebruik word vir die ontwikkeling van toepassings. Dit is geskryf in C ++, maar kan in ander tale gebruik word deur Bindings (in ons geval PySide of PyQt)

Verskille tussen PySide en PyQt

hoofsaaklik

  • Lisensie, PySide is gelisensieer onder die voorwaardes van die LGPL en PyQT is onder die voorwaardes van die GPL of onder 'n kommersiële lisensie, dus ons sal moet betaal in die geval van 'n geslote aansoek.
  • PySide is geskep deur Nokia en PyQt deur RiverBank.
  • PySide bespaar ons die moeite om STR te gebruik elke keer as ons die QString van elk van die QT-voorwerpe gebruik.

Ons kan die volledige veranderinge uiteensit Hier.

Voorbereiding:

Ons installeer Qt:

As ons 'n distro met Kde het, moet ons reeds hê wat ons nodig het, so nie:

sudo apt-installeer qt4-dev-tools

Ons installeer PySide:

sudo apt-get install pyside pyside-tools

Ons eerste Python + QT-toepassing

Ons gaan na ons gunsteling teksredigeerder, ek beveel aan dat u sublime-text2 installeer, maar u kan die een gebruik wat u verkies, en ons tik die volgende kode en stoor dit met die naam wat ons wil hê, en eindig altyd met die uitbreiding ".py" , Ek sal stoor as app1.py:

3

Sien Kode

Ons bestuur dit van die konsole af so:

python app1.py

Hierdie venster moet verskyn

 

2

 

Wat? Net dit, want waaroor kla jy as jy net 'n konsole gehad het? Wat het jy verwag, 'n Erp? kom man, iets begin.

Kom ons verduidelik nou die kode:

from PySide.QtGui import *

from sys import exit, argv

Hier voer ons die nodige modules in vir die uitvoering van PySide.

app = QApplication(argv)

Ons skep die Qapplication-instansie met die naam-app.

window = Qwidget()

Ons skep die instansie van QWidget ().

window.setWindowTitle("Primera App PySide")

Ons voer die setWindowTitle-metode uit, wat 'n tekenreeks ontvang as parameter om die titel van ons Qwidget te "instel".

window.show()

Ons wys ons venster

exit(app.exec_())

uiteindelik voer ons die oneindige uitvoeringsiklus van ons QApplication () uit.

Dankie

Dankie vir diegene wat my hier gevolg het en nuttig was. Vir die volgende handleiding sal ek verduidelik hoe u ons vensters met QT Designer kan ontwerp en in ons projekte kan invoer.

Verder voeg ek die skakel vanaf Linux by die forum, waar ek 'n klein onderwerp het met 'n klein biblioteek met tutoriale en luislanggidse, wat verskillende terme bevat wat die volgende bevat:

Basiese Python-tutoriale

wxPython

PyQt en PySide

Django

web2py

Wetenskaplike programmering in luislang.

En nog vele meer.

SKAKEL NA DIE FORUM

Ek hoop dat hulle u dien, ek neem afskeid, soos altyd 'n plesier om tot hierdie wonderlike gemeenskap te behoort.

 


Die inhoud van die artikel voldoen aan ons beginsels van redaksionele etiek. Klik op om 'n fout te rapporteer hier.

41 kommentaar, los joune

Laat u kommentaar

Jou e-posadres sal nie gepubliseer word nie. Verpligte velde gemerk met *

*

*

  1. Verantwoordelik vir die data: Miguel Ángel Gatón
  2. Doel van die data: Beheer SPAM, bestuur van kommentaar.
  3. Wettiging: U toestemming
  4. Kommunikasie van die data: Die data sal nie aan derde partye oorgedra word nie, behalwe deur wettige verpligtinge.
  5. Datastoor: databasis aangebied deur Occentus Networks (EU)
  6. Regte: U kan u inligting te alle tye beperk, herstel en verwyder.

  1.   @ vertroue17 dijo

    Dankie vir die berig!

  2.   annubis dijo

    2 dinge:

    1. Qt is oorspronklik nie deur Nokia ontwikkel nie, maar deur Trolltech, wat later deur Nokia gekoop is. Laasgenoemde verkoop toe Qt aan Digia.
    2. Die afbeelding in die eerste toepassingsvoorbeeld kom nie ooreen met die kode nie.

    Dankie vir die tutoriaal, ek sal dit volg 🙂

    1.    f3niX dijo

      U het heeltemal reg, ek het dit gemis. En die tweede ding wat u ook reg het, is dat ek dit verander het om dit makliker te maak en nie klas te gebruik nie, en ek het die verandering, beginnerfoute, gemis. Ek gee al die regstellings vir een of ander redakteur om dit goed te keur.

    2.    f3niX dijo

      Ek kan nie verander nie, ek laat dit aan een of ander redakteur toe.

      Groete.

      1.    neysonv dijo

        Stuur 'n redakteur per e-pos met die aangepaste handleiding. U kan dit stuur na die e-pos van @nano wat een van die redakteurs is
        mailto: nano.world.contact@gmail.com
        moet asseblief nie die tutoriaal so los nie
        groete

  3.   Germán dijo

    Een ding val my op: waarom gebruik u 'vanaf invoer *' in u kode?

    Groete!

    1.    f3niX dijo

      Dit is die korrekte manier om in te voer, as u so invoer, vertel u die spesifieke klas van die module wat u wil invoer, en u noem nie die hele module nie.

      Groete.

      1.    Germán dijo

        Ek vind die soort verwarrend. Verder word dit nie in PEP8 aanbeveel nie:

        "Die invoer van wildkaarte (vanaf module-invoer *) moet vermy word, aangesien dit onduidelik maak watter name in die naamruimte voorkom, wat lesers en baie outomatiese instrumente verwar ..."

        1.    f3niX dijo

          Ek is meestal gelei deur professionele kodes, soos Ninja-Ide. U kan die kode hier sien: https://github.com/ninja-ide/ninja-ide/blob/master/ninja_ide/core/ipc.pyDit word ook in PyQt gedoen, maar in enige vorm is daar niks wat u dwing om die een of ander vorm te gebruik nie.

          Hier kan u 'n bespreking oor StackOverflow sien, hieroor:

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

          Daar noem hulle die voor- en nadele van elk van die style.

          1.    f3niX dijo

            ok jammer ek het jou nie verstaan ​​nie, ek weet dit, ek het dit net gedoen omdat ek nie 'n verduideliking van elke element QApplication, QWidget sou gee nie, veralgemeen dan is jy heeltemal reg.

            Verskoon die misverstand.

          2.    Germán dijo

            Nee, u het dit nie verstaan ​​nie of nie opgelet nie ... Ek bedoel die gebruik van «van module-invoer *», dit wil sê, ek bedoel die «sterretjie» ... in daardie StackOverflow-boodskap praat hulle oor iets anders, maar hulle beklemtoon dit steeds:

            "Beide metodes is aanvaarbaar, maar gebruik dit nie vanaf module-invoer * nie."

            Word dit nou verstaan?

          3.    Felipe dijo

            Duits is reg. Wat is die nut van die invoer van module as u al die inhoud met die asteric vir die invoermodule invoer? Slds net so lekker boodskap.

          4.    Germán dijo

            Ahh nou, nou verstaan ​​ek ... in elk geval, moet my nie te lank neem nie, ek is ook 'n beginner in Python. As u by my blog inloer, sal u sien dat ek 'n berig soortgelyk aan u gemaak het, maar met Gtk + 3 met PyGObject.

            Groete en dankie!

        2.    f3niX dijo

          Hier verlaat ek die Pep8, in Spaans, wat die gebruik van im beveel
          Dit is baie raadsaam om relatiewe invoer te gebruik om kode uit 'n pakket in te voer. Gebruik altyd die absolute pad van die pakket vir alle invoer. Selfs nou dat PEP 328 [7] volledig in Python 2.5 geïmplementeer is, word die gebruik van relatiewe invoer ernstig ontmoedig; absolute invoer is meer draagbaar en gewoonlik meer leesbaar.

          Wanneer u 'n klas uit 'n module invoer, is dit gewoonlik korrek
          vanaf myclass invoer MyClass
          vanaf foo.bar.yourclass voer u YourClass in

          Groete

          1.    jagter dijo

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

            Alex Martelli (kernontwikkelaar) beveel so iets aan:


            from PyQt4 import QtCore, QtGui

  4.   msx dijo

    Ek wou meer hê, vir wanneer die 2de deel!?
    Groete 🙂

  5.   eliotyd3000 dijo

    Baie goeie tutoriale, en dit is gemakliker om te programmeer.

  6.   jagter dijo

    Hier is 'n voorbeeld van 'n koppelvlak van nuuts af (sonder om QtDesigner te gebruik).

    https://github.com/xr09/metrocontador

    1.    f3niX dijo

      Die dhunter-app is uitstekend, hier weet ons nie eens hoeveel hulle ons vir elektrisiteit vra nie, groet haha.

      1.    jagter dijo

        Dankie, dit is een van die programme wat 'n mens vir persoonlike gebruik maak en ander bedien. Hier in Kuba word die kwitansie op die koers afgebreek, dit is maklik om die algoritme te kopieer.

  7.   Jose Eloy dijo

    Ek is baie bewus van hierdie kursus. Ek stel al lank belang in toepassings op verskillende platforms en ek dink die kombinasie van Python + QT / Pyside is 'n uitstekende opsie. Groete en geluk met die inisiatief

  8.   Bryan Rodriguez dijo

    Ek het al die stappe gevolg presies soos u sê, maar wanneer ek die app1.py-toepassing in die terminale uitvoer, word dit vir my gesê Traceback (laaste oproep laas):
    Lêer "app1.py", reël 1, in
    vanaf PySide.QtGui invoer *
    ImportError: Geen module met die naam PySide.QtGui nie. Waarvoor is dit?

    1.    Felipe dijo

      dit is omdat u 'n weergawe van python as standaardtolk gebruik, maar dat u nie 'n pyside vir die weergawe geïnstalleer het nie.

      Probeer dit aan die begin van die lêer byvoeg:
      #! usr / bin / python3
      of anders
      #! usr / bin / python2

      Ek beveel aan dat u Eclipse saam met pydev gebruik en die tolk goed instel.
      slds

      1.    Felipe dijo

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

        1.    f3niX dijo

          PySide is nog nie versoenbaar met Python3 nie, wees versigtig daarmee, en tweedens, dit kontroleer die invoer deur die interaktiewe python-konsole, sodat u weet dat u dit het of nie, dit installeer ook pip.

          1.    Bryan Rodriguez dijo

            Hoe kan ek dit verifieer?

          2.    f3niX dijo

            In 'n konsole gebruik "Python", in elk geval, ek beveel aan dat u die biblioteek wat ek hier onder in die pos gelaat het, invoer en "python vir almal" aflaai, u het meer basis nodig.

            Groete en geluk.

          3.    Bryan Rodriguez dijo

            Baie dankie, dit was baie nuttig vir my.

          4.    Mauricio Tobares dijo

            kyk vriend F3niX Ek het dit gevind, dit lyk asof hulle vir python 3.3.2 op windows (wat ek tot volgende week het) binaries het vir 32 bits en 64 bits, ek het u voorbeeld probeer en dit werk met python 3.3.2 en Ek gebruik die PyScripter wat verskillende omgewings installeer. As u die python 3 oopmaak, word die skrifte as python 3 uitgevoer, en as u die 2.7 oopmaak, word dit uitgevoer as 2.7 ensovoorts (logies genoeg moet u die weergawe van python laat installeer ... dit word verstaan)

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

            Ek sal jou daar agterlaat, skinder, miskien dien dit iemand anders 😀

      2.    Bryan Rodriguez dijo

        Ek kry dieselfde fout.

        1.    Germán dijo

          Het u PySide geïnstalleer?

          1.    Bryan Rodriguez dijo

            Ek laat dit installeer.

        2.    Felipe dijo

          Probeer dit met PyQT4 installeer en verander dan die PySide-lyne vir PyQT4 of PyQt4, en laat dit loop. jojo. Gebruik die verduistering. Geluk.

          1.    Bryan Rodriguez dijo

            Hoe doen ek dit?.

  9.   karlinux dijo

    Baie dankie !!! Wag vir die tweede hoofstuk

    1.    f3niX dijo

      Vir hierdie Vrydag mag ek dit groet (die universiteit het my 'n bietjie vol) groete.

  10.   Mauricio Tobares dijo

    Vriend F3nIX Ek wag vir u handleiding N ° 2, 3, 4 ... N hehehe

    Ek het my baie elegante linux al geïnstalleer met die PySide wag en alles!

    Kom ons kyk wanneer hy aangemoedig word om 'n nuwe tutor te wys 😀

    1.    f3niX dijo

      Verskoon my vriend, ek het dit in konsepte, maar werk en studies het my nie tyd gegee nie, ek belowe om hierdie week iets uit te kry.

      'N Groot groet

  11.   Dante dijo

    Hallo, ek stel al lank belang om Python te leer, maar ek twyfel. Wat ek wil hê, is om 'n aansoek te doen om die inligtingproses van die familiebesigheid waar ek werk, 'n bietjie te verbeter. Ek wil graag iets vir vensters doen, eers met vensters, dit werk alles op 'n enkele rekenaar en dan kan dit via die internet gekoppel wees aan die databasis waarop 'n paar rekenaars sal koppel. Daar is baie uiteenlopendheid in terme van die GUI van die toepassing, en dit maak my duiselig. Wat beveel u aan om dit 'n moderne en aantreklike voorkoms te gee? Ek sal ook statistiese grafieke doen en verslae druk, wat kan ek daarvoor gebruik? Cheers

  12.   jorge dijo

    Hallo, baie goed, u boodskap, ek het 'n vraag, kan ek my app met pyside sonder enige probleme verkoop?

    1.    f3niX dijo

      Wel, lisensies is altyd mal, maar gratis sagtewarelisensies laat u ook toe om sagteware te verkoop. Wat gebeur, is dat die GPL u dwing om die kode te versprei, in teenstelling met die LGPL, wat u nie daartoe dwing nie.

      Ek is in elk geval nie 'n kenner van lisensiëring nie.

      Groete.