Prvi koraci sa Python + Qt # 1

Ovaj je vodič fokusiran na podučavanje korištenju QT okvira koristeći Python kao programski jezik, za to možemo koristiti i PySide i PyQt, ali u ovom tutorialu ćemo koristiti PySide jer se autoru ovog vodiča više sviđa licenca LGPL PySide. nego GPL ili PyQt Commercial.

Prvo ... Šta je Python?

Prema Wikipediji:

"Python je protumačeni programski jezik na visokoj razini čija filozofija naglašava vrlo čistu sintaksu i favorizira čitljiv kôd."

Python je multipadradigmski programski jezik, tako da podržava različite paradigme python programiranja, na primjer podržava: objektno orijentirano programiranje (OOP), imperativno programiranje (strukturirano) i u manjoj mjeri funkcionalno programiranje.

Samo to?

Ne, to je i dinamički jezik za kucanje, što znači da nam python omogućava dodijeljivanje različitih vrsta vrijednosti istoj varijabli tokom izvršavanja programa, neki to vide kao prednost, drugi kao nedostatak, uvjerite se sami .

Pored spomenutog, Python nam omogućava (kao i mnogi drugi), programiranje i u web okruženju i na web radnoj površini, on je i višeplatformni, trenutno podržava Gnu / Linux, Windows, Mac osx, Android (ako treba ih spomenuti radi vaše izmjene).

Šta je QT?

QT je multiplatformni okvir, koji je originalno razvila Nokia, da bi se kasnije prodao Digiji, koji se koristi za razvoj aplikacija, napisan je na C ++, ali se može koristiti i na drugim jezicima putem Vezova (u našem slučaju PySide ili PyQt )

Razlike između PySide i PyQt

Uglavnom

  • Licenca, PySide je licenciran pod uvjetima LGPL-a, a PyQT je pod uvjetima GPL-a ili komercijalne licence, tako da bismo morali platiti u slučaju stvaranja zatvorene aplikacije.
  • PySide je kreirala Nokia, a PyQt RiverBank.
  • PySide nam štedi probleme korištenja STR-a svaki put kada koristimo QString svakog od QT objekata.

Možemo detaljno objasniti kompletne promjene Aqui.

Priprema:

Instaliramo Qt:

Ako imamo distro s Kdeom, trebali bismo već imati ono što nam treba, ako ne:

sudo apt-get install qt4-dev-tools

Instaliramo PySide:

sudo apt-get install pyside pyside-tools

Naša prva aplikacija Python + QT

Idemo u naš omiljeni uređivač teksta, preporučujem vam da instalirate sublime-text2, ali možete koristiti onaj koji želite, a mi ukucavamo sljedeći kod i spremimo ga s imenom koje želimo da uvijek završava s nastavkom ".py" , Sačuvat ću kao app1.py:

3

Pogledajte kod

Izvodimo ga iz konzole ovako:

python app1.py

Trebao bi se pojaviti ovaj prozor

2

Šta? Samo to, jer ako ste ranije imali samo konzolu, na što se žalite? Šta ste očekivali, Erp? hajde čovječe da nešto započne.

Sada objasnimo kod:

from PySide.QtGui import *

from sys import exit, argv

Ovdje uvozimo potrebne module za izvršavanje PySide-a.

app = QApplication(argv)

Kreiramo instancu Qapplication s imenom app.

window = Qwidget()

Kreiramo instancu QWidget ().

window.setWindowTitle("Primera App PySide")

Izvršavamo metodu setWindowTitle koja prima String kao parametar za "postavljanje" naslova našeg Qwidgeta.

window.show()

Pokazujemo naš prozor

exit(app.exec_())

konačno izvršavamo beskonačni ciklus izvršavanja naše QApplication ().

hvala

Hvala vam za one koji su me slijedili ovdje i bili korisni. Za sljedeći vodič objasnit ću vam kako dizajnirati naše prozore pomoću QT Designera i uvesti ih u naše projekte.

Dodatno dodajem link na forum desde linux gdje imam malu temu s malom bibliotekom Python tutorijala i vodiča, koji sadrže različite termine uključujući:

Osnovni vodiči za Python

wxPython

PyQt i PySide

Django

web2py

Naučno programiranje u pythonu.

I još mnogo toga.

LINK NA FORUM

Nadam se da će vam služiti, opraštam se, kao i uvijek zadovoljstvo što pripadam ovoj divnoj zajednici.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   @ trust17 rekao je

    Hvala na postu!

  2.   annubis rekao je

    2 stvari:

    1. Qt prvotno nije razvila Nokia, već Trolltech, koju je kasnije kupila Nokia. Potonji je potom Qt prodao Digiji.
    2. Slika u prvom primjeru aplikacije ne odgovara kodu.

    Hvala na lekciji, slijedit ću je 🙂

    1.    f3niX rekao je

      Potpuno si u pravu što sam to propustio. I druga stvar koju ste također u pravu je da sam je promijenio kako bih je olakšao i ne koristio klasu i propustio sam modifikaciju, početničke greške. Već sam proslijedio ispravke da ih neki urednik odobri.

    2.    f3niX rekao je

      Ne mogu modificirati, prepuštam to nekom uredniku.

      Pozdrav.

      1.    neysonv rekao je

        Pošaljite e-poštu uredniku s ispravljenim vodičem. možete ga poslati na e-mail @nano koji je jedan od urednika
        mailto: nano.world.contact@gmail.com
        molim vas, ne ostavljajte tutorial ovako
        pozdravi

  3.   Njemački rekao je

    Jedna stvar me pogađa: zašto u svom kodu koristite "from import *"?

    Pozdrav!

    1.    f3niX rekao je

      To je ispravan način uvoza, pri ovakvom uvozu mu kažete koju određenu klasu modula želite uvesti, a ne pozivate kompletan modul.

      Pozdrav.

      1.    Njemački rekao je

        To me zbunjuje. Nadalje, ne preporučuje se u PEP8:

        "Treba izbjegavati uvoz zamjenskih znakova (iz modula import *), jer oni čine nejasnim koja su imena prisutna u prostoru imena, što zbunjuje čitače i mnoge automatizirane alate ..."

        1.    f3niX rekao je

          Vodio sam se uglavnom profesionalnim kodovima, kao što je Ninja-Ide, kod možete vidjeti ovdje: https://github.com/ninja-ide/ninja-ide/blob/master/ninja_ide/core/ipc.pyTo se radi i u PyQt-u, ali u bilo kojem obliku ne postoji ništa što vas prisiljava da koristite jedan ili drugi obrazac.

          Ovdje možete vidjeti raspravu o StackOverflowu o ovome:

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

          Tamo spominju prednosti i nedostatke svakog od stilova.

          1.    f3niX rekao je

            ok izvinite što vas nisam razumio, znam to, učinio sam to samo zato što nisam htio davati objašnjenje svakog elementa QApplication, QWidget, a zatim generalizirati, ali u potpunosti ste u pravu.

            Izvinite za nesporazum.

          2.    Njemački rekao je

            Ne, niste razumjeli ili niste obraćali pažnju ... Mislim, koristeći «iz modula import *», to jest, mislim na «zvjezdicu» ... u tom StackOverflow postu govore o nečem drugom, ali to i dalje ističu:

            "Bilo koja metoda je prihvatljiva, ali nemojte koristiti iz uvoza modula *."

            Je li to sada razumljivo?

          3.    felipe rekao je

            Njemački je u pravu. Kakva je korist od from import import ako za taj modul uvoza uvozite sav sadržaj sa zvjezdicom. Slds jednako lijep post.

          4.    Njemački rekao je

            Ah, dobro, sad razumijem ... svejedno, ne uzimajte mi predugo, također sam početnik u Pythonu. Ako prođete kroz moj blog, vidjet ćete da sam napisao post sličan vašem, ali s Gtk + 3 koristeći PyGObject.

            Pozdrav i hvala!

        2.    f3niX rekao je

          Ovdje ostavljam Pep8, na španskom, preporučujući upotrebu im
          Izuzetno je neodređeno koristiti relativni uvoz za uvoz koda iz paketa. Uvijek koristite apsolutni put paketa za sav uvoz. Čak i sada kada je PEP 328 [7] u potpunosti implementiran u Python 2.5, korištenje relativnog uvoza ozbiljno se obeshrabruje; apsolutni uvoz je prenosiviji i obično čitljiviji.

          Kada uvozite klasu iz modula, obično je ispravno to učiniti
          iz myclass uvoza MyClass
          iz foo.bar.yourclass uvoz YourClass

          Saludos

          1.    dhunter rekao je

            Pročitaj ovo: http://stackoverflow.com/questions/3615125/should-wildcard-import-be-avoided

            Alex Martelli (core py programer) preporučuje otprilike ovako:


            from PyQt4 import QtCore, QtGui

  4.   MSX rekao je

    Htio sam više, kad drugi dio!?
    Pozdrav 🙂

  5.   eliotime3000 rekao je

    Vrlo dobri vodiči, plus možda je ugodnije programirati.

  6.   dhunter rekao je

    Evo primjera sučelja od nule (bez korištenja QtDesignera).

    https://github.com/xr09/metrocontador

    1.    f3niX rekao je

      Aplikacija dhunter je izvrsna, ovdje ni ne znamo koliko nam naplaćuju struju, haha ​​pozdrav.

      1.    dhunter rekao je

        Hvala vam, to je jedna od onih aplikacija koje jedna izrađuje za osobnu upotrebu i služi drugima. Ovdje na Kubi račun se raščlanjuje s cijenom, lako je kopirati algoritam.

  7.   Jose Eloy rekao je

    Biću vrlo svjestan ovog kursa. Već me dugo zanimaju višeplatformske aplikacije i mislim da je kombinacija Python + QT / Pyside odlična opcija. Pozdrav i čestitke za inicijativu

  8.   Bryan Rodriguez rekao je

    Slijedio sam sve korake točno onako kako vi kažete, ali kad pokrenem aplikaciju app1.py u terminalu, kaže mi Traceback (najnoviji zadnji poziv):
    Datoteka "app1.py", red 1, u
    iz PySide.QtGui uvoza *
    ImportError: Nema modula pod nazivom PySide.QtGui. Šta je ovo?

    1.    felipe rekao je

      to je zato što koristite verziju pythona kao zadani tumač, ali nemate instaliran pyside za tu verziju.

      Pokušajte dodati na početku datoteke:
      #! usr / bin / python3
      ili drugo
      #! usr / bin / python2

      Preporučujem vam da koristite Eclipse s pydev-om i dobro konfigurirate tumač.
      slds

      1.    felipe rekao je

        #! / usr / bin / python3
        ili drugo
        #! / usr / bin / python2

        1.    f3niX rekao je

          PySide još nije kompatibilan s Python3, budite oprezni s tim, i drugo, provjerava uvoz kroz interaktivnu python konzolu, tako da znate jeste li ga instalirali ili ne, već instalira i pip.

          1.    Bryan Rodriguez rekao je

            Kako to mogu potvrditi?

          2.    f3niX rekao je

            U konzoli koristite "Python", ionako vam preporučujem da unesete biblioteku koju sam ostavio dolje u postu i preuzmete "python za sve", treba vam više baze.

            Pozdrav i sreca.

          3.    Bryan Rodriguez rekao je

            Puno vam hvala, bilo mi je od velike pomoći.

          4.    Mauricio Tobares rekao je

            pogledaj prijatelju F3niX Pronašao sam ovo, čini se da za python 3.3.2 na prozorima (a to je ono što imam do sljedeće sedmice) imaju binarne datoteke za 32 bita i 64 bita, probao sam vaš primjer i radi s pythonom 3.3.2 i Koristim PyScripter koji instalira različita okruženja, ako otvorite python 3, on pokreće skripte poput python 3, a ako otvorite 2.7 izvršava ih kao 2.7 i tako dalje (logično morate imati instaliranu tu verziju pythona ... razumije se)

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

            Ostavit ću vas tamo, tračeve, možda će poslužiti nekom drugom 😀

      2.    Bryan Rodriguez rekao je

        Dobivam istu grešku.

        1.    Njemački rekao je

          Da li imate instaliran PySide?

          1.    Bryan Rodriguez rekao je

            Imam ga instaliranog.

        2.    felipe rekao je

          Isprobajte PyQT4, instalirajte ga, a zatim promijenite linije PySide u PyQT4 ili PyQt4 i pokrenite ga. jojo. Koristite pomrčinu. Sreća.

          1.    Bryan Rodriguez rekao je

            Kako to mogu?

  9.   karlinux rekao je

    Puno vam hvala !!! Čeka se drugo poglavlje

    1.    f3niX rekao je

      Za ovaj petak mogu ga objaviti (Univerzitet me ima malo punog) pozdrava.

  10.   MauricioTobares rekao je

    Prijatelj F3nIX Čekam vaš vodič br. 2, 3, 4… N hehehe

    Već sam instalirao svoj vrlo elegantni linux sa PySide-om na čekanju i sve ostalo!

    Pogledajmo kada će se ohrabriti da pokaže novog nastavnika 😀

    1.    f3niX rekao je

      Oprostite prijatelju, imam to u nacrtima, ali posao i studije nisu mi dali vremena, obećavam da ću nešto izvaditi ove sedmice.

      Veliki pozdrav

  11.   Dante rekao je

    Pozdrav, dugo sam bio zainteresiran za učenje Pythona, ali sumnjam. Ono što želim je da podnesem aplikaciju za malo poboljšanje procesa informisanja porodičnog preduzeća u kojem radim, želio bih napraviti nešto za prozore, s prozorom u početku, sve bi to radilo na jednom računaru, a zatim da može biti povezani putem Interneta sa bazom podataka na koju bi se povezalo par računara. Puno je raznolikosti u pogledu GUI aplikacije, i to mi vrti u glavi. Šta preporučujete da biste mu dali moderan i atraktivan izgled? Takođe bih napravio neke statističke grafikone i štampao izveštaje, šta mogu da koristim za to? Živjeli

  12.   jorge rekao je

    Pozdrav, vrlo dobro, vaš post, imam pitanje. Mogu li bez problema prodati svoju aplikaciju napravljenu sa pysideom?

    1.    f3niX rekao je

      Pa, licence su uvijek lude, ali licence besplatnog softvera također vam omogućavaju prodaju softvera, ono što se događa je da vas GPL prisiljava na distribuciju koda, za razliku od LGPL-a, koji vas na to ne prisiljava.

      U svakom slučaju, nisam stručnjak za licenciranje.

      Pozdrav.