Pirmieji žingsniai naudojant „Python + Qt # 1“

Ši pamoka skirta mokyti naudoti „QT“ sistemą naudojant „Python“ kaip programavimo kalbą, tam galime naudoti tiek „PySide“, tiek „PyQt“, tačiau šioje pamokoje naudosime „PySide“, nes šios pamokos autoriui labiau patinka „LGPL PySide“ licencija. nei GPL ar „PyQt Commercial“.

Pirma ... Kas yra „Python“?

Pagal Vikipediją:

"Python yra labai aukšto lygio interpretuojama programavimo kalba, kurios filosofija pabrėžia labai švarią sintaksę ir palaiko įskaitomą kodą."

„Python“ yra daugiapadradigminė programavimo kalba, todėl ji palaiko įvairias „python“ programavimo paradigmas, pavyzdžiui, palaiko: „Object Oriented Programming“ (OOP), „Imperative Programming“ („Struktūruotą“) ir kiek mažiau „Funkcinį“ programavimą.

Tik tai, kad?

Ne, tai taip pat yra dinaminio spausdinimo kalba, o tai reiškia, kad pitonas leidžia mums priskirti skirtingo tipo reikšmes tam pačiam kintamajam vykdant programą, vieni tai vertina kaip pranašumą, kiti - kaip trūkumą, įsitikinkite patys .

Be to, kas jau buvo minėta, „Python“ leidžia mums (kaip ir daugeliui kitų) programuoti tiek žiniatinklio aplinkoje, tiek žiniatinklio darbalaukyje, jis taip pat yra daugiaplatformis, šiuo metu palaiko „Gnu / Linux“, „Windows“, „Mac OSX“, „Android“ (Jei reikia juos paminėti dėl savo modifikacijos).

Kas yra QT?

QT yra daugiaplatformis pagrindas, kurį iš pradžių sukūrė „Nokia“, kad vėliau būtų galima parduoti „Digia“, kuris naudojamas programų kūrimui, jis parašytas C ++, tačiau gali būti naudojamas kitomis kalbomis per „Bindings“ (mūsų atveju „PySide“ arba PyQt)

Skirtumai tarp PySide ir PyQt

Daugiausia

  • Licencija, „PySide“ yra licencijuojama pagal LGPL sąlygas, o „PyQT“ - pagal GPL sąlygas arba pagal komercinę licenciją, todėl mes turėtume mokėti, jei sukursime uždarą programą.
  • „PySide“ sukuria „Nokia“, o „PyQt“ - „RiverBank“.
  • „PySide“ sutaupo problemų naudojant STR kiekvieną kartą, kai naudojame kiekvieno QT objekto QString.

Mes galime išsamiai apibūdinti visus pakeitimus Čia.

Paruošimo būdas:

Mes įdiegiame Qt:

Jei turime platinimo su Kde, mes jau turėtume tai, ko mums reikia, jei ne:

sudo apt-get install qt4-dev-tools

Įdiegiame „PySide“:

sudo apt-get install pyside pyside-tools

Mūsų pirmoji „Python + QT“ programa

Mes einame į mūsų mėgstamą teksto rengyklę, aš rekomenduoju įdiegti sublime-text2, bet jūs galite naudoti tą, kurį norite, ir mes įveskite šį kodą ir išsaugome jį pavadinimu, kurio norime, visada baigiantis plėtiniu ".py" , Aš išsaugosiu kaip app1.py:

3

Žr. Kodas

Mes jį valdome iš konsolės taip:

python app1.py

Šis langas turėtų pasirodyti

2

Ką? Tik tai, nes jei anksčiau turėjote tik pultą, kuo skundžiatės? Ko tikėjotės, Erp? ateik žmogui, kai kažkas prasideda.

Dabar paaiškinkime kodą:

from PySide.QtGui import *

from sys import exit, argv

Čia importuojame reikiamus modulius, reikalingus „PySide“ vykdymui.

app = QApplication(argv)

Kuriame „Qapplication“ egzempliorių su pavadinimo programa.

window = Qwidget()

Sukuriame „QWidget“ () egzempliorių.

window.setWindowTitle("Primera App PySide")

Vykdome metodą „setWindowTitle“, kuris gauna eilutę kaip parametrą „nustatyti“ mūsų „Qwidget“ pavadinimą.

window.show()

Mes parodome savo langą

exit(app.exec_())

galiausiai mes atliekame begalinį mūsų QApplication () vykdymo ciklą.

Ačiū

Ačiū tiems, kurie sekė mane čia ir buvo naudingi. Kitoje pamokoje paaiškinsiu, kaip su „QT Designer“ projektuoti langus ir juos importuoti į mūsų projektus.

Be to, pridedu nuorodą į forumą desde linux kur turiu nedidelę temą su nedidele python mokymo programų ir vadovų biblioteka, kurioje yra įvairių terminų, įskaitant:

Pagrindinės „Python“ mokymo programos

„WxPython“

PyQt ir PySide

Django

„Web2Py“

Mokslinis programavimas pitone.

Ir daug daugiau.

NUORODA Į FORUMĄ

Tikiuosi, kad jie tau tarnauja, atsisveikinu, kaip visada malonu priklausyti šiai nuostabiai bendruomenei.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.

  1.   @ trust17 sakė

    Ačiū už įrašą!

  2.   Annubis sakė

    2 dalykai:

    1. „Qt“ iš pradžių sukūrė ne „Nokia“, o „Trolltech“, kurį vėliau nusipirko „Nokia“. Tada pastaroji pardavė „Qt“ „Digia“.
    2. Pirmojo programos pavyzdžio vaizdas neatitinka kodo.

    Ačiū už pamoką, aš jos laikysiuosi 🙂

    1.    f3niX sakė

      Tu visiškai teisus, man jo netrūko. Antras dalykas, kurį jūs taip pat teisus, yra tai, kad aš jį pakeičiau, kad būtų lengviau ir nenaudotų klasės, ir aš praleidau modifikaciją, pradedančiųjų klaidas. Aš jau perduodu taisymus, kad kai kurie redaktoriai juos patvirtintų.

    2.    f3niX sakė

      Negaliu modifikuoti, palieku tai kažkam redaktoriui.

      Sveikinimai.

      1.    neysonv sakė

        Siųskite redaktorių el. Paštu su pataisyta pamoka. galite nusiųsti į @ nano, kuris yra vienas iš redaktorių, el. laišką
        mailto: nano.world.contact@gmail.com
        nepalikite tokios pamokos
        dėl

  3.   Germán sakė

    Mane stebina vienas dalykas: kodėl kode naudojate „iš importo *“?

    Sveiki atvykę!

    1.    f3niX sakė

      Tai yra teisingas importavimo būdas, kai importuodami taip, nurodote, kokią konkrečią modulio klasę norite importuoti, ir nepaskambinate į visą modulį.

      Sveikinimai.

      1.    Germán sakė

        Manau, kad tokia painiava. Be to, PEP8 nerekomenduojama:

        "Reikėtų vengti pakaitinių simbolių importavimo (iš modulio importavimo *), nes dėl jų neaišku, kurie vardai yra vardų srityje, supainiodami tiek skaitytojus, tiek daugelį automatizuotų įrankių ..."

        1.    f3niX sakė

          Aš daugiausia vadovavausi profesionaliais kodais, tokiais kaip „Ninja-Ide“, kodą galite pamatyti čia: https://github.com/ninja-ide/ninja-ide/blob/master/ninja_ide/core/ipc.pyTai daroma ir „PyQt“, tačiau jokiu būdu niekas nepriverčia naudoti vienos ar kitos formos.

          Čia galite pamatyti „StackOverflow“ diskusiją apie tai:

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

          Ten jie mini kiekvieno stiliaus pliusus ir minusus.

          1.    f3niX sakė

            gerai, atsiprašau, kad nesupratau tavęs, aš tai žinau, aš tai padariau tik todėl, kad neketinau paaiškinti kiekvieno elemento QApplication, QWidget, tada apibendrink, bet tu visiškai teisus.

            Atleiskite nesusipratimą.

          2.    Germán sakė

            Ne, jūs nesupratote arba nekreipėte į tai dėmesio ... Aš turiu omenyje «iš modulio importo *», tai yra, turiu omenyje «žvaigždutę» ... tame „StackOverflow“ įraše, apie kurį jie kalba apie ką nors kita, bet jie vis tiek tai pabrėžia:

            "Bet kuris metodas yra priimtinas, bet nenaudokite iš modulio importavimo *."

            Ar tai dabar suprantama?

          3.    Felipe sakė

            Vokietis teisus. Kuo naudinga importuoti iš modulio, jei importuojate visą importo modulio turinį su žvaigždute. Slds toks pat gražus įrašas.

          4.    Germán sakė

            Na, dabar aš suprantu ... bet kokiu atveju, neimk manęs per ilgai, aš taip pat esu „Python“ pradedantysis. Jei užsuksite į mano tinklaraštį, pamatysite, kad naudodamasis PyGObject, aš parašiau panašų į jūsų įrašą, bet naudodamas „Gtk + 3“.

            Sveikinimai ir ačiū!

        2.    f3niX sakė

          Čia palieku „Pep8“, ispaniškai rekomenduoju naudoti im
          Labai nepatartina naudoti santykinį importą importuojant kodą iš pakuotės. Visam importui visada naudokite absoliutų paketo kelią. Net ir dabar, kai PEP 328 [7] yra visiškai įdiegtas „Python 2.5“, rimtai nerekomenduojama naudoti santykinio importo; absoliutus importas yra labiau nešiojamas ir paprastai skaitomesnis.

          Kai importuojate klasę iš modulio, tai padaryti yra teisinga
          iš myclass importuokite MyClass
          iš foo.bar.yourclass importuokite „YourClass“

          saludos

          1.    dunteris sakė

            Perskaityk tai: http://stackoverflow.com/questions/3615125/should-wildcard-import-be-avoided

            Alexas Martelli (pagrindinis py kūrėjas) rekomenduoja kažką panašaus:


            from PyQt4 import QtCore, QtGui

  4.   MSX sakė

    Norėjau daugiau, kai 2-oji dalis!?
    Sveikinimai 🙂

  5.   3000 sakė

    Labai geros pamokos, be to, gali būti patogiau programuoti.

  6.   dunteris sakė

    Čia yra sąsajos pavyzdys nuo nulio (nenaudojant „QtDesigner“).

    https://github.com/xr09/metrocontador

    1.    f3niX sakė

      Dhunter programa yra puiki, čia mes net nežinome, kiek jie moka mus už elektrą, haha ​​sveikinimai.

      1.    dunteris sakė

        Ačiū, tai yra viena iš tų programų, kurias sukuria asmeniniam naudojimui ir kuri tarnauja kitiems. Čia Kuboje kvitas suskirstytas pagal normą, algoritmą lengva nukopijuoti.

  7.   Jose Eloy sakė

    Aš labai gerai žinosiu šį kursą. Aš jau seniai domiuosi tarpplatformių programų kūrimu ir manau, kad „Python + QT / Pyside“ derinys yra puikus pasirinkimas. Sveikinimai ir sveikinimai už iniciatyvą

  8.   Bryanas Rodriguezas sakė

    Aš atlikau visus veiksmus tiksliai taip, kaip sakote, bet kai paleidžiu „app1.py“ programą terminale, ji man sako „Traceback“ (paskutinis paskutinis skambutis):
    Failas „app1.py“, 1 eilutė
    iš „PySide.QtGui“ importo *
    ImportError: Nėra modulio pavadinimu PySide.QtGui. Kas tai yra?

    1.    Felipe sakė

      Taip yra todėl, kad jūs naudojate python versiją kaip numatytąjį vertėją, tačiau neturite tos versijos „pyside“.

      Pabandykite pridėti failo pradžioje:
      #! usr / bin / python3
      arba
      #! usr / bin / python2

      Aš rekomenduoju jums naudoti „Eclipse“ su „pydev“ ir gerai sukonfigūruoti vertėją.
      slds

      1.    Felipe sakė

        3. / usr / bin / python
        arba
        2. / usr / bin / python

        1.    f3niX sakė

          „PySide“ dar nesuderinamas su „Python3“, būkite atsargūs su tuo ir, antra, patikrinkite importavimą per interaktyvią „Python“ konsolę, kad žinotumėte, jog ją įdiegėte, ar ne, ji taip pat įdiegia „pip“.

          1.    Bryanas Rodriguezas sakė

            Kaip tai patikrinti?

          2.    f3niX sakė

            Jei naudojate konsolę „Python“, vis tiek rekomenduoju jums įvesti biblioteką, kurią palikau žemiau įraše, ir atsisiųsti „python visiems“, jums reikia daugiau bazės.

            Sveikinimai ir sėkmė.

          3.    Bryanas Rodriguezas sakė

            Labai ačiū, tai man buvo labai naudinga.

          4.    Mauricio Tobaresas sakė

            ieškok draugo F3niX. Tai radau, atrodo, kad „Python 3.3.2“ sistemoje „Windows“ (ką aš turiu iki kitos savaitės) jie turi dvejetainius failus 32 bitams ir 64 bitams, aš išbandžiau jūsų pavyzdį ir jis veikia su „Python 3.3.2“ ir Aš naudoju „PyScripter“, kuris įdiegia skirtingas aplinkas. Jei atidarote „python 3“, jis paleidžia scenarijus kaip „python 3“, o jei atidarote 2.7, jis juos vykdo kaip 2.7 ir pan. (Logiška, kad turite turėti tą python versiją ... tai suprantama)

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

            Paliksiu tave ten, apkalbos, gal tai pasitarnaus kitam 😀

      2.    Bryanas Rodriguezas sakė

        Gaunu tą pačią klaidą.

        1.    Germán sakė

          Ar turite įdiegtą „PySide“?

          1.    Bryanas Rodriguezas sakė

            Aš jį įdiegiau.

        2.    Felipe sakė

          Pabandykite su „PyQT4“ įdiekite, tada pakeiskite „PySide“ eilutes į „PyQT4“ arba „PyQt4“ ir leiskite jai vykdyti. jojo. Naudokite užtemimą. Sėkmė.

          1.    Bryanas Rodriguezas sakė

            Kaip tai padaryti?.

  9.   karlinux sakė

    Labai ačiū !!! Laukiama antrojo skyriaus

    1.    f3niX sakė

      Šį penktadienį galiu paskelbti sveikinimus.

  10.   MauricioTobaresas sakė

    Draugas F3nIX Laukiu jūsų pamokos Nr. 2, 3, 4 ... N hehehe

    Aš jau turiu įdiegtą savo labai elegantišką „Linux“ su laukiančiu „PySide“ ir viskas!

    Pažiūrėkime, kada jis bus paragintas parodyti naują auklėtoją 😀

    1.    f3niX sakė

      Atleisk, drauge, aš to turiu juodraščiuose, bet darbas ir studijos man nedavė laiko, žadu šią savaitę ką nors gauti.

      Didelis sveikinimas

  11.   Dante sakė

    Sveiki, man jau seniai įdomu mokytis Python, bet aš abejoju. Noriu sukurti paraišką, kad būtų šiek tiek pagerintas šeimos verslo, kuriame aš dirbu, informacinis procesas, norėčiau ką nors padaryti dėl langų, iš pradžių su langais, visa tai veiktų viename kompiuteryje ir tada jis galėtų būti prijungtas internetu prie duomenų bazės, prie kurios prisijungtų pora kompiuterių. Programos GUI kūrimas yra labai įvairus, todėl man svaigsta galva. Ką rekomenduojate suteikti jai modernią ir patrauklią išvaizdą? Aš taip pat norėčiau padaryti keletą statistinių diagramų ir atsispausdinti ataskaitas, ką aš galiu tam naudoti? linkėjimais

  12.   jorge sakė

    Sveiki, labai gerai, jūsų įrašas, turiu klausimą, ar galėčiau be problemų parduoti savo programą, pagamintą naudojant „pyside“?

    1.    f3niX sakė

      Na, licencijos visada yra beprotiškos, tačiau nemokamos programinės įrangos licencijos taip pat leidžia parduoti programinę įrangą, kas atsitinka taip, kad GPL priverčia jus platinti kodą, skirtingai nei LGPL, kuris jūsų neverčia to daryti.

      Bet kokiu atveju nesu licencijavimo ekspertas.

      Sveikinimai.