Hapat e parë me Python + Qt # 1

Ky tutorial është i përqendruar në mësimin e përdorimit të kornizës QT duke përdorur Python si gjuhë programimi, për këtë mund të përdorim si PySide ashtu edhe PyQt, por në këtë udhëzues do të përdorim PySide sepse autori i këtij tutoriali e pëlqen më shumë licencën LGPL PySide. sesa GPL ose PyQt Commercial.

Së pari ... Çfarë është Python?

Sipas Wikipedia:

"Python është një gjuhë programimi e interpretuar shumë e nivelit të lartë, filozofia e së cilës thekson sintaksën shumë të pastër dhe është e favorshme për kodin e lexueshëm."

Python është një gjuhë programimi multipadradigma, kështu që mbështet paradigma të ndryshme të programimit python, për shembull mbështet: Programim i Orientuar në Objekte (OOP), Programim Imperative (i Strukturuar) dhe në një masë më të vogël Programim Funksional.

Vetëm se?

Jo, është gjithashtu një gjuhë dinamike shtypjeje, që do të thotë se python na lejon të caktojmë lloje të ndryshme vlerash në të njëjtën ndryshore gjatë ekzekutimit të programit, disa e shohin atë si një avantazh, të tjerët si një disavantazh, shikoni vetë .

Përveç sa më sipër, Python na lejon (si shumë të tjerë), të programojmë si në mjedisin e uebit ashtu edhe në desktopin e uebit, është gjithashtu ndër-platformë, aktualisht mbështet Gnu / Linux, Windows, Mac osx, Android (Nëse ju duhet t'i përmendni ato për modifikimin tuaj).

Çfarë është QT?

QT është një kornizë multiplatforme, e zhvilluar fillimisht nga Nokia, për t’u shitur më vonë në Digia, e cila përdoret për zhvillimin e aplikacioneve, është shkruar në C ++, por mund të përdoret në gjuhë të tjera përmes Lidhjeve (në rastin tonë PySide ose PyQt )

Dallimet midis PySide dhe PyQt

kryesisht

  • Licencë, PySide është licencuar sipas kushteve të LGPL dhe PyQT është nën kushtet e GPL ose nën një licencë tregtare, kështu që ne do të duhet të paguajmë në rast të krijimit të një aplikacioni të mbyllur.
  • PySide është krijuar nga Nokia, dhe PyQt nga RiverBank.
  • PySide na kursen mundimin e përdorimit të STR sa herë që përdorim QString të secilit prej objekteve QT.

Ne mund të detajojmë ndryshimet e plota Ketu.

Përgatitja:

Ne instalojmë Qt:

Nëse kemi një distro me Kde duhet të kemi tashmë atë që na duhet, nëse jo:

sudo apt-get instaloni mjetet qt4-dev

Ne instalojmë PySide:

sudo apt-get install pyside pyside-tools

Zbatimi ynë i parë Python + QT

Ne shkojmë tek redaktori ynë i preferuar i tekstit, ju rekomandoj që të instaloni sublime-text2, por mund të përdorni atë që preferoni, dhe ne shtypim kodin vijues dhe e ruajmë me emrin që duam të mbarojë gjithmonë me shtesën ".py" , Unë do të ruaj si app1.py:

3

Shih Kodin

Ne e drejtojmë atë nga tastiera si kjo:

python app1.py

Kjo dritare duhet të shfaqet

2

Çfarë? Vetëm kjo, sepse nëse keni pasur vetëm një tastierë më parë, për çfarë ankoheni? Çfarë prisje, një Erp? hajde njeri, fillon diçka.

Tani le të shpjegojmë kodin:

from PySide.QtGui import *

from sys import exit, argv

Këtu ne importojmë modulet e nevojshme për ekzekutimin e PySide.

app = QApplication(argv)

Ne krijojmë instancën Qapplication me emrin app.

window = Qwidget()

Ne krijojmë shembullin QWidget ().

window.setWindowTitle("Primera App PySide")

Ne ekzekutojmë metodën setWindowTitle, e cila merr një String si një parametër për të "vendosur" titullin e Qwidget tonë.

window.show()

Ne tregojmë dritaren tonë

exit(app.exec_())

së fundmi ne ekzekutojmë ciklin e pafund të ekzekutimit të Aplikimit tonë QA ().

Falënderim

Faleminderit për ata që më kanë ndjekur këtu dhe kanë qenë të dobishëm. Për udhëzimin tjetër do të shpjegoj se si të projektojmë dritaret tona me QT Designer dhe t'i importojmë ato në projektet tona.

Për më tepër, unë shtoj lidhjen në forum desde linux ku kam një temë të vogël me një bibliotekë të vogël mësimesh dhe udhëzuesish për python, që përmban terma të ndryshëm duke përfshirë:

Udhëzime themelore të Python

wxPython

PyQt dhe PySide

Django

web2py

Programimi shkencor në python.

Dhe shumë më tepër.

LIDHJA ME FORUMIN

Shpresoj që ata t'ju shërbejnë, i them lamtumirë, si gjithmonë një kënaqësi që i përkas këtij komuniteti të mrekullueshëm.


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.

  1.   @ besim17 dijo

    Faleminderit për postimin!

  2.   Annubis dijo

    2 gjëra:

    1. Qt nuk u zhvillua fillimisht nga Nokia, por nga Trolltech, e cila më vonë u ble nga Nokia. Ky i fundit më pas ia shiti Qt Digia-s.
    2. Imazhi në shembullin e parë të aplikacionit nuk përputhet me kodin.

    Faleminderit për udhëzimin, do ta ndjek

    1.    f3niX dijo

      Keni plotësisht të drejtë më ka marrë malli. Dhe gjëja e dytë që keni gjithashtu të drejtë, është se e ndryshova për ta bërë më të lehtë dhe për të mos përdorur klasën dhe më humbi modifikimi, gabimet fillestare. Unë tashmë kaloj korrigjimet që disa redaktorë t'i miratojë ato.

    2.    f3niX dijo

      Nuk mund të modifikoj, ia lë disa redaktorëve.

      Përshëndetje.

      1.    neysonv dijo

        Dërgoni me email një redaktor me udhëzuesin e korrigjuar. mund ta dërgoni në emailin e @nano i cili është një nga redaktorët
        mailto: nano.world.contact@gmail.com
        ju lutem mos e lini tutorialin kështu
        regards

  3.   Gjermanisht dijo

    Një gjë më bën përshtypje: pse përdorni "nga importi *" në kodin tuaj?

    Përshëndetje!

    1.    f3niX dijo

      Wayshtë mënyra e saktë për të importuar, kur importoni kështu ju i tregoni se cilën klasë specifike të modulit dëshironi të importoni dhe nuk e quani të gjithë modulin.

      Përshëndetje.

      1.    Gjermanisht dijo

        Unë e shoh atë lloj konfuze. Për më tepër, nuk rekomandohet në PEP8:

        "Importet e kartave të egra (nga importi i modulit *) duhet të shmangen, pasi ato e bëjnë të paqartë se cilët emra janë të pranishëm në hapësirën e emrave, duke ngatërruar lexuesit dhe shumë mjete të automatizuara ..."

        1.    f3niX dijo

          Unë jam udhëhequr kryesisht nga kode profesionale, të tilla si Ninja-Ide, ju mund ta shihni kodin këtu: https://github.com/ninja-ide/ninja-ide/blob/master/ninja_ide/core/ipc.pyIsshtë bërë edhe në PyQt, por në çdo formë nuk ka asgjë që të detyron të përdorësh një formë ose tjetrën.

          Këtu mund të shihni një diskutim në StackOverflow, në lidhje me këtë:

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

          Aty ata përmendin pro dhe kundër të secilit prej stileve.

          1.    f3niX dijo

            ok më falni që nuk ju kuptova, unë e di atë, unë e bëra vetëm sepse nuk do të jepja një shpjegim për secilin element të aplikimit QA, QWidget, atëherë përgjithëso por ke plotësisht të drejtë.

            Falni keqkuptimin.

          2.    Gjermanisht dijo

            Jo, nuk e kuptove ose nuk i kushtove vëmendje ... Dua të them duke përdorur «nga importi i modulit», domethënë dua të them «yllin» ... në atë postim të StackOverflow ata flasin për diçka tjetër, por ata ende e theksojnë atë:

            "Secila metodë është e pranueshme, por mos përdorni nga importi i modulit *."

            A kuptohet tani?

          3.    Felipe dijo

            Gjermanja ka të drejtë. Cila është përdorimi i importit nga moduli nëse importoni të gjithë përmbajtjen me asterikën, për atë modul importi. Slds po aq i bukur post.

          4.    Gjermanisht dijo

            Ahh mirë, tani e kuptoj ... gjithsesi mos më zgjat shumë, unë jam gjithashtu një fillestar në Python. Nëse kaloni nëpër blogun tim, do të shihni se unë bëra një postim të ngjashëm me tuajin, por me Gtk + 3 duke përdorur PyGObject.

            Pershendetje dhe faleminderit!

        2.    f3niX dijo

          Këtu lë Pep8, në spanjisht duke rekomanduar përdorimin e im
          Highlyshtë shumë e këshillueshme të përdoren importe relative për të importuar kod nga një paketë. Gjithmonë përdorni rrugën e paketës absolute për të gjitha importet. Edhe tani që PEP 328 [7] është implementuar plotësisht në Python 2.5, përdorimi i importeve relative është dekurajuar seriozisht; importet absolute janë më të lëvizshme dhe zakonisht më të lexueshme.

          Kur importoni një klasë nga një modul, zakonisht është e saktë ta bëni këtë
          nga MyClass import MyClass
          nga foo.bar.yourclass importo YourClass

          të fala

          1.    dhunues dijo

            Lexoje kete: http://stackoverflow.com/questions/3615125/should-wildcard-import-be-avoided

            Alex Martelli (zhvilluesi kryesor i py) rekomandon diçka si kjo:


            from PyQt4 import QtCore, QtGui

  4.   MSX dijo

    Unë isha duke kërkuar më shumë, për kur pjesa e 2-të!?
    Pershendetje

  5.   eliotime3000 dijo

    Tutoriale shumë të mira, gjithashtu mund të jetë më komode të programoheni.

  6.   dhunues dijo

    Këtu është një shembull i një ndërfaqeje nga e para (pa përdorur QtDesigner).

    https://github.com/xr09/metrocontador

    1.    f3niX dijo

      Aplikacioni dhunter është i shkëlqyeshëm, këtu ne nuk dimë as sa na ngarkojnë për energji elektrike, përshëndetje haha.

      1.    dhunues dijo

        Faleminderit, është një nga ato aplikacione që dikush bën për përdorim personal dhe u shërben të tjerëve. Këtu në Kubë fatura paraqitet me normën, është e lehtë të kopjosh algoritmin.

  7.   Jose Eloy dijo

    Unë do të jem shumë i vetëdijshëm për këtë kurs. Unë kam qenë i interesuar në aplikacione ndër-platformë për një kohë të gjatë dhe unë mendoj se kombinimi Python + QT / Pyside është një mundësi e shkëlqyeshme. Përshëndetje dhe urime për iniciativën

  8.   Bryan Rodriguez dijo

    Unë ndoqa të gjitha hapat saktësisht siç thua ti, por kur ekzekutoj aplikacionin app1.py në terminal ai më tregon Traceback (thirrja më e fundit e fundit):
    Skedari "app1.py", rreshti 1, në
    nga PySide.QtGui import *
    ImportError: Asnjë modul me emrin PySide.QtGui. Për çfarë është kjo ?.

    1.    Felipe dijo

      kjo sepse po përdorni një version të python si interpretues të paracaktuar, por nuk keni të instaluar pyside për atë version.

      Provoni të shtoni në fillim të skedarit:
      #! usr / bin / python3
      ose ndryshe
      #! usr / bin / python2

      Unë ju rekomandoj që të përdorni Eclipse me pydev dhe të konfiguroni mirë përkthyesin.
      slds

      1.    Felipe dijo

        #! / usr / bin / python3
        ose ndryshe
        #! / usr / bin / python2

        1.    f3niX dijo

          PySide nuk është akoma i pajtueshëm me Python3, ki kujdes me atë, dhe së dyti, kontrollon importet përmes konsolës ndërvepruese të python, kështu që e di që e ke të instaluar apo jo, instalon edhe pip.

          1.    Bryan Rodriguez dijo

            Si mund ta verifikoj atë?

          2.    f3niX dijo

            Në një tastierë përdorni "Python", gjithsesi ju rekomandoj të futni bibliotekën që lashë më poshtë në postim dhe të shkarkoni "python për të gjithë", ju duhet më shumë bazë.

            Përshëndetje dhe fat.

          3.    Bryan Rodriguez dijo

            Faleminderit shumë, ishte shumë e dobishme për mua.

          4.    Mauricio Tobares dijo

            shiko mik F3niX E gjeta këtë, duket se për python 3.3.2 në windows (që është ajo që kam deri javën e ardhshme) ata kanë binarë për 32 bit dhe 64 bit, unë provova shembullin tuaj dhe funksionon me python 3.3.2 dhe Unë përdor PyScripter që instalon mjedise të ndryshme, nëse hapni python 3 ai ekzekuton skriptet si python 3 dhe nëse hapni 2.7 i ekzekuton ato si 2.7 e kështu me radhë (logjikisht duhet të keni të instaluar atë version të python ... kuptohet)

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

            Unë do të të lë atje, thashetheme, ndoshta do t'i shërbejë dikujt tjetër

      2.    Bryan Rodriguez dijo

        Kam të njëjtin gabim.

        1.    Gjermanisht dijo

          A keni të instaluar PySide?

          1.    Bryan Rodriguez dijo

            Unë e kam të instaluar.

        2.    Felipe dijo

          Dhe provoni që PyQT4 ta instalojë dhe më pas ndryshoni linjat PySide për PyQT4 ose PyQt4, dhe jepjani që të ekzekutohet. jojo Përdorni eklipsin. Fat

          1.    Bryan Rodriguez dijo

            Si ta bëj atë ?.

  9.   karlinux dijo

    Faleminderit shumë !!! Në pritje të kapitullit të dytë

    1.    f3niX dijo

      Për këtë të Premte mund ta botoj (Universiteti më ka pak të plotë) përshëndetje.

  10.   MauricioTobares dijo

    Shoku F3nIX Unë jam duke pritur për udhëzimin tuaj N ° 2, 3, 4… N hehehe

    Unë tashmë kam instaluar linux tim shumë elegant me PySide duke pritur dhe gjithçka!

    Le të shohim kur ai inkurajohet të tregojë një mësues të ri

    1.    f3niX dijo

      Më fal mik, e kam në drafte por puna dhe studimet nuk më kanë dhënë kohë, premtoj të marr diçka këtë javë.

      Një përshëndetje e madhe

  11.   Dante dijo

    Përshëndetje, unë kam qenë i interesuar të mësoj Python për një kohë të gjatë, por kam disa dyshime. Ajo që dua është të bëj një aplikacion për të përmirësuar pak procesin e informacionit të biznesit familjar ku unë punoj, do të doja të bëja diçka për dritare, me dritare në fillim, do të funksiononte e gjitha në një kompjuter të vetëm dhe pastaj që të mund të të jetë i lidhur përmes internetit me bazën e të dhënave në të cilën do të lidhen disa kompjuterë. Ekziston shumë larmi sa i përket GUI-së të aplikacionit dhe kjo më bën të marr mendtë. Çfarë rekomandoni për t'i dhënë asaj një pamje moderne dhe tërheqëse? Unë gjithashtu do të bëja disa grafikë statistikorë dhe raporte të shtypura, çfarë mund të përdor për këtë? Brohoritje

  12.   Jorge dijo

    Përshëndetje, shumë mirë, postimi juaj, kam një pyetje, a mund ta shes aplikacionin tim të bërë me pyside pa ndonjë problem?

    1.    f3niX dijo

      Epo, licencat janë gjithmonë të çmendura, por licencat e programeve falas gjithashtu ju lejojnë të shisni softuer, ajo që ndodh është që GPL ju detyron të shpërndani kodin, ndryshe nga LGPL, i cili nuk ju detyron ta bëni këtë.

      Në çdo rast, unë nuk jam një ekspert i licencimit.

      Përshëndetje.