Mga Unang Hakbang sa Python + Qt # 1

Ang tutorial na ito ay nakatuon sa pagtuturo ng paggamit ng balangkas ng QT gamit ang Python bilang isang wika ng programa, para dito maaari naming magamit ang parehong PySide at PyQt, ngunit sa tutorial na ito gagamitin namin ang PySide dahil mas gusto ng may-akda ng tutorial na ito ang lisensya ng LGPL PySide. kaysa sa GPL o PyQt Komersyal.

Una ... Ano ang Python?

Ayon sa Wikipedia:

"Ang Python ay isang napakataas na antas na binibigyang kahulugan na wika ng programa na ang pilosopiya ay binibigyang diin ang napakalinis na syntax at nakakatulong sa nababasa na code."

Ang Python ay isang multipadradigm na wika ng programa, kaya't sinusuportahan nito ang iba't ibang mga paraday ng programa ng python, halimbawa sinusuportahan nito: Object oriented Programming (OOP), Imperative Programming (Structured) at sa isang mas kaunting lawak na Functional programming.

Yun lang?

Hindi, ito rin ay isang pabagu-bagong wika ng pagta-type, na nangangahulugang pinapayagan kami ng sawa na magtalaga ng iba't ibang mga uri ng mga halaga sa parehong variable sa panahon ng pagpapatupad ng programa, nakikita ito ng ilan bilang isang kalamangan, ang iba bilang isang kawalan, tingnan mo para sa iyong sarili .

Bilang karagdagan sa nabanggit na, pinapayagan kami ng Python (tulad ng marami pang iba), na pinaprograma ang kapwa sa kapaligiran sa web at sa web desktop, cross-platform din ito, kasalukuyang sinusuportahan nito ang Gnu / Linux, Windows, Mac osx, Android (Kung kailangan mong banggitin ang mga ito para sa iyong pagbabago).

Ano ang QT?

Ang QT ay isang balangkas na multiplatform, na orihinal na binuo ng Nokia, upang ibenta sa kalaunan sa Digia, na ginagamit para sa pagpapaunlad ng aplikasyon, nakasulat ito sa C ++, ngunit maaaring magamit sa ibang mga wika sa pamamagitan ng Bindings (sa aming kaso PySide o PyQt)

Mga pagkakaiba sa pagitan ng PySide at PyQt

Higit sa lahat

  • Ang lisensya, ang PySide ay lisensyado sa ilalim ng mga tuntunin ng LGPL at ang PyQT ay nasa ilalim ng mga tuntunin ng GPL o sa ilalim ng isang lisensyang komersyal, kaya kakailanganin naming magbayad sakaling lumilikha ng isang saradong aplikasyon.
  • Ang PySide ay nilikha ng Nokia, at ang PyQt ng RiverBank.
  • Sine-save tayo ng PySide ng problema sa paggamit ng STR sa tuwing gagamitin namin ang QString ng bawat isa sa mga bagay na QT.

Maaari naming idetalye ang mga kumpletong pagbabago Dito.

Paghahanda:

Nag-install kami ng Qt:

Kung mayroon kaming distro sa Kde dapat mayroon na tayo ng kailangan natin, kung hindi:

sudo apt-get install qt4-dev-tool

Nag-install kami ng PySide:

sudo apt-get install pyside pyside-tools

Ang aming Unang Application sa Python + QT

Pumunta kami sa aming paboritong text editor, inirerekumenda kong mag-install ka ng sublime-text2, ngunit maaari mong gamitin ang isa na gusto mo, at nai-type namin ang sumusunod na code at i-save ito sa pangalan na nais naming laging nagtatapos sa extension na ".py" , Magse-save ako bilang app1.py:

3

Tingnan ang Code

Pinapatakbo namin ito mula sa console na tulad nito:

python app1.py

Dapat lumitaw ang window na ito

2

Ano? Tanging Iyon, sapagkat kung mayroon ka lamang console dati, ano ang reklamo mo? Ano ang iyong inaasahan, isang Erp? dumating sa tao, may nagsisimula.

Ipaliwanag natin ngayon ang code:

from PySide.QtGui import *

from sys import exit, argv

Dito namin mai-import ang mga kinakailangang module para sa pagpapatupad ng PySide.

app = QApplication(argv)

Lumilikha kami ng halimbawa ng Qapplication kasama ang app ng pangalan.

window = Qwidget()

Lumilikha kami ng halimbawa ng QWidget ().

window.setWindowTitle("Primera App PySide")

Isinasagawa namin ang pamamaraan na setWindowTitle, na tumatanggap ng isang String bilang isang parameter upang "itakda" ang pamagat ng aming Qwidget.

window.show()

Ipinapakita namin ang aming bintana

exit(app.exec_())

sa wakas ay isinasagawa namin ang walang katapusang ikot ng pagpapatupad ng aming QApplication ().

Salamat

Salamat sa mga sumunod sa akin dito at naging kapaki-pakinabang. Para sa susunod na tutorial ipaliwanag ko kung paano idisenyo ang aming mga bintana sa QT Designer at i-import ang mga ito sa aming mga proyekto.

Bukod pa rito, idinaragdag ko ang link sa forum desde linux kung saan mayroon akong maliit na tema na may maliit na aklatan ng mga tutorial at gabay ng python, na naglalaman ng iba't ibang termino kabilang ang:

Pangunahing Mga Tutorial sa Python

wxPython

PyQt at PySide

Django

web2py

Pang-agham na programa sa sawa.

At marami pang iba.

I-link sa FORUM

Inaasahan kong paglingkuran ka nila, nagpaalam ako, na laging kasiyahan na mapasama sa kahanga-hangang pamayanan.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   @ tiwala17 dijo

    Salamat sa post!

  2.   Annubis dijo

    2 bagay:

    1. Ang Qt ay hindi orihinal na binuo ng Nokia, ngunit ng Trolltech, na kalaunan ay binili ng Nokia. Ang huli ay nagbenta ng Qt kay Digia.
    2. Ang imahe sa unang halimbawa ng aplikasyon ay hindi tumutugma sa code.

    Salamat sa tutorial, susundin ko ito 🙂

    1.    f3niX dijo

      Tama ang tama mo namiss ko ito. At ang pangalawang bagay na tama ka rin, binago ko ito upang mas madali at hindi magamit ang klase at napalampas ko ang pagbabago, mga error sa nagsisimula. Naipasa ko na ang mga pagwawasto para sa ilang editor upang aprubahan ang mga ito.

    2.    f3niX dijo

      Hindi ko mabago, iniiwan ko ito sa ilang editor.

      Pagbati.

      1.    neysonv dijo

        Mag-email sa isang editor na may naitama na tutorial. maaari mo itong ipadala sa email ni @nano na isa sa mga editor
        mailto: nano.world.contact@gmail.com
        mangyaring huwag iwanan ang tutorial na tulad nito
        tungkol

  3.   Germán dijo

    Isang bagay ang nakakaakit sa akin: bakit mo ginagamit ang "mula sa pag-import *" sa iyong code?

    Pagbati!

    1.    f3niX dijo

      Ito ang tamang paraan ng pag-import, kapag ang pag-import ng tulad nito sasabihin mo sa ito kung anong tukoy na klase ng module ang nais mong i-import, at hindi mo tinawag ang kumpletong module.

      Pagbati.

      1.    Germán dijo

        Nakakalito ako. Bukod dito, hindi ito inirerekomenda sa PEP8:

        "Ang pag-import ng wildcard (mula sa pag-import ng module *) ay dapat na iwasan, dahil ginagawa nilang hindi malinaw kung aling mga pangalan ang naroroon sa namespace, nakalilito ang parehong mga mambabasa at maraming mga automated na tool ..."

        1.    f3niX dijo

          Ginabayan ako ng karamihan ng mga propesyonal na code, tulad ng Ninja-Ide, makikita mo ang code dito: https://github.com/ninja-ide/ninja-ide/blob/master/ninja_ide/core/ipc.pyGinagawa rin ito sa PyQt, ngunit sa anumang paraan ay walang pumipilit sa iyo na gumamit ng isang form o iba pa.

          Makikita mo rito ang isang talakayan sa StackOverflow, tungkol dito:

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

          Nabanggit doon ang mga kalamangan at kahinaan ng bawat isa sa mga istilo.

          1.    f3niX dijo

            ok sorry hindi kita naiintindihan, alam ko yun, nagawa ko lang ito dahil hindi ako magbibigay ng paliwanag sa bawat element na QApplication, QWidget, pagkatapos ay gawing pangkalahatan ngunit tama ka talaga.

            Patawarin ang hindi pagkakaunawaan.

          2.    Germán dijo

            Hindi, hindi mo naintindihan o hindi ka nagbigay ng pansin ... Ibig kong sabihin ang paggamit ng «mula sa module import *», iyon ay, ibig sabihin ko ang «asterisk» ... sa post na StackOverflow pinag-uusapan nila ang iba pa, ngunit binibigyang diin pa rin nila ito:

            "Ang alinmang pamamaraan ay katanggap-tanggap, ngunit huwag gumamit mula sa pag-import ng module *."

            Naiintindihan na ba ito?

          3.    felipe dijo

            Tama ang Aleman. Ano ang gamit mula sa pag-import ng module kung mai-import mo ang lahat ng nilalaman gamit ang asteric, para sa module ng pag-import na iyon. Ang mga Slds kasing ganda ng post.

          4.    Germán dijo

            Ahh well, ngayon naiintindihan ko na ... kahit papaano huwag mo akong masyadong tagalin, nagsisimula rin ako sa Python. Kung dadaan ka sa aking blog, makikita mo na gumawa ako ng isang post na katulad sa iyo ngunit sa Gtk + 3 gamit ang PyGObject.

            Pagbati at salamat!

        2.    f3niX dijo

          Dito ko iniiwan ang Pep8, sa Espanyol na inirekomenda ang paggamit ng im
          Lubos na maipapayo na gumamit ng mga kaugnay na pag-import upang mag-import ng code mula sa isang pakete. Palaging gamitin ang ganap na landas ng pakete para sa lahat ng mga pag-import. Kahit na ngayon na ang PEP 328 [7] ay buong ipinatupad sa Python 2.5, ang paggamit ng mga kaugnay na pag-import ay seryosong pinanghihinaan ng loob; ang ganap na pag-import ay mas portable at kadalasang mas nababasa.

          Kapag nag-i-import ng isang klase mula sa isang module, karaniwang wastong gawin ito
          mula sa myclass import MyClass
          mula sa foo.bar.yourclass import ang YourClass

          Regards

          1.    dhunter dijo

            Basahin mo ito: http://stackoverflow.com/questions/3615125/should-wildcard-import-be-avoided

            Inirekomenda ni Alex Martelli (core py developer) ang isang bagay tulad nito:


            from PyQt4 import QtCore, QtGui

  4.   msx dijo

    Gusto ko pa, para saan nung 2nd part!?
    Pagbati

  5.   eliotime3000 dijo

    Napakagandang mga tutorial, plus maaaring mas komportable itong mag-program.

  6.   dhunter dijo

    Narito ang isang halimbawa ng isang interface mula sa simula (nang hindi gumagamit ng QtDesigner).

    https://github.com/xr09/metrocontador

    1.    f3niX dijo

      Ang dhunter app ay mahusay, dito hindi namin alam kung magkano ang singil sa amin para sa kuryente, haha ​​pagbati.

      1.    dhunter dijo

        Salamat, ito ay isa sa mga app na ginagawa ng isa para sa personal na paggamit at naghahatid sa iba. Dito sa Cuba ang resibo ay pinaghiwalay ng rate, madaling kopyahin ang algorithm.

  7.   Jose Eloy dijo

    Malalaman ko ang kursong ito. Ako ay interesado sa mga application ng cross-platform sa loob ng mahabang panahon at sa palagay ko ang kumbinasyon ng Python + QT / Pesaan ay isang mahusay na pagpipilian. Pagbati at pagbati para sa pagkukusa

  8.   Bryan Rodriguez dijo

    Sinundan ko ang lahat ng mga hakbang nang eksakto tulad ng sinasabi mo ngunit kapag pinatakbo ko ang app1.py application sa terminal sinabi nito sa akin ang Traceback (pinakahuling tawag sa huli):
    I-file ang "app1.py", linya 1, sa
    mula sa PySide.QtGui import *
    ImportError: Walang module na pinangalanang PySide.QtGui. Para saan ito ?.

    1.    felipe dijo

      iyon ay dahil gumagamit ka ng isang bersyon ng sawa bilang default na interpreter, ngunit wala kang naka-install na bukid para sa bersyon na iyon.

      Subukang idagdag sa simula ng file:
      #! usr / bin / python3
      kung hindi
      #! usr / bin / python2

      Inirerekumenda kong gamitin mo ang Eclipse na may pydev at i-configure nang maayos ang interpreter.
      slds

      1.    felipe dijo

        #! / usr / bin / python3
        kung hindi
        #! / usr / bin / python2

        1.    f3niX dijo

          Ang PySide ay hindi pa katugma sa Python3, mag-ingat sa na, at pangalawa, sinusuri nito ang mga pag-import sa pamamagitan ng interactive na python console, upang malaman mong na-install mo o hindi, nag-install din ito ng pip.

          1.    Bryan Rodriguez dijo

            Paano ko ito mave-verify?

          2.    f3niX dijo

            Sa isang console na "Python" gamitin, inirerekumenda kong ipasok mo ang library na naiwan ko sa ibaba sa post at i-download ang "python para sa lahat", kailangan mo ng karagdagang base.

            Pagbati at swerte.

          3.    Bryan Rodriguez dijo

            Maraming salamat, napaka-kapaki-pakinabang sa akin.

          4.    Mauricio Tobares dijo

            tumingin kaibigan F3niX Natagpuan ko ito, tila para sa sawa 3.3.2 sa mga bintana (na kung ano ang mayroon ako hanggang sa susunod na linggo) mayroon silang mga binary para sa 32 bits at 64 bits, sinubukan ko ang iyong halimbawa at gumagana ito sa python 3.3.2 at Ginagamit ko ang PyScripter na nag-install ng iba't ibang mga kapaligiran, kung binuksan mo ang python 3 pinapatakbo nito ang mga script tulad ng python 3 at kung buksan mo ang 2.7 ay isinasagawa ang mga ito bilang 2.7 at iba pa (lohikal na kailangan mong magkaroon ng naka-install na bersyon ng python ... ito ay naiintindihan)

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

            Iiwan kita dyan, tsismis, baka magsilbi pa sa iba 😀

      2.    Bryan Rodriguez dijo

        Nakukuha ko ang parehong error.

        1.    Germán dijo

          Mayroon ka bang naka-install na PySide?

          1.    Bryan Rodriguez dijo

            Na-install ko ito.

        2.    felipe dijo

          At subukan sa PyQT4 i-install ito at pagkatapos ay baguhin ang mga linya ng PySide para sa PyQT4 o PyQt4, at bigyan ito ng pagpapatakbo. si jojo Gumamit ng eklipse. Swerte

          1.    Bryan Rodriguez dijo

            Paano ko gagawin yan?.

  9.   karlinux dijo

    Maraming salamat !!! Naghihintay para sa ikalawang kabanata

    1.    f3niX dijo

      Para sa Biyernes na ito maaari kong mai-publish ito (Ang unibersidad ay may maliit na buo sa akin) na pagbati

  10.   MauricioTobares dijo

    Kaibigan F3nIX Naghihintay ako para sa iyong tutorial N ° 2, 3, 4… N hehehe

    Mayroon na akong napaka-matikas na linux na naka-install sa PySide na naghihintay at lahat!

    Tingnan natin kapag hinihimok siyang magpakita ng isang bagong tagapagturo 😀

    1.    f3niX dijo

      Paumanhin kaibigan, mayroon ako nito sa mga draft ngunit ang trabaho at pag-aaral ay hindi nagbigay sa akin ng oras, nangangako akong makakalabas sa linggong ito.

      Isang malaking pagbati

  11.   Dante dijo

    Kumusta, matagal na akong interesado na malaman ang Python ngunit mayroon akong ilang mga pag-aalinlangan. Ang nais ko ay gumawa ng isang application upang mapagbuti ng kaunti ang proseso ng impormasyon ng negosyo ng pamilya kung saan ako nagtatrabaho, nais kong gumawa ng isang bagay para sa mga bintana, na may mga bintana sa una, gagana ang lahat sa isang solong pc at pagkatapos ay magagawa nito ay konektado sa pamamagitan ng internet sa database kung saan magkakabit ang isang pares ng mga computer. Mayroong maraming pagkakaiba-iba sa mga tuntunin ng GUIing ang application at iyon ay nahihilo ako. Ano ang inirerekumenda mong bigyan ito ng moderno at kaakit-akit na hitsura? Gumagawa rin ako ng ilang mga graphic na stat at i-print ang mga ulat, ano ang magagamit ko para doon? Cheers

  12.   Jorge dijo

    Kumusta, napakahusay, ang iyong post, mayroon akong isang katanungan. Maaari ko bang ibenta ang aking app na ginawa sa mga bukid nang walang anumang problema?

    1.    f3niX dijo

      Sa gayon, laging mabaliw ang mga lisensya, ngunit pinapayagan ka rin ng mga libreng lisensya ng software na magbenta ng software, kung ano ang mangyayari ay pinipilit ka ng GPL na ipamahagi ang code, hindi katulad ng LGPL, na hindi ka pinipilit na gawin ito.

      Sa anumang kaso, hindi ako dalubhasa sa paglilisensya.

      Pagbati.