Unuaj Paŝoj kun Python + Qt # 1

Ĉi tiu lernilo fokusas instrui la uzon de la QT-kadro uzante Python kiel programlingvo, por tio ni povas uzi ambaŭ PySide kaj PyQt, sed en ĉi tiu lernilo ni uzos PySide ĉar la aŭtoro de ĉi tiu lernilo pli ŝatas la permesilon LGPL PySide. ol la Komerca GPL aŭ PyQt.

Unue ... Kio estas Python?

Laŭ Vikipedio:

"Python estas tre altnivela interpretita programlingvo, kies filozofio emfazas tre puran sintakson kaj favoras legeblan kodon."

Python estas plurdadigma programlingvo, do ĝi subtenas malsamajn pitonajn programadajn paradigmojn, ekzemple ĝi subtenas: Objektan Orientitan Programadon (OOP), Imperativan Programadon (Strukturitan) kaj malpli multe Funkcian programadon.

Nur tio?

Ne, ĝi ankaŭ estas dinamika tajplingvo, kio signifas, ke python permesas al ni atribui malsamajn specojn de valoroj al la sama variablo dum la ekzekuto de la programo, iuj vidas ĝin kiel avantaĝon, aliaj kiel malavantaĝon, rigardu mem .

Aldone al la menciita, Python permesas al ni (kiel multaj aliaj) programi kaj en la interreta medio kaj en la interreta labortablo, ĝi ankaŭ estas plurplatforma, nuntempe ĝi subtenas Gnu / Linukso, Vindozo, Mac osx, Android (Se vi bezonas mencii ilin por via modifo).

Kio estas QT?

QT estas plurplatforma kadro, origine disvolvita de Nokia, por poste esti vendita al Digia, kiu estas uzata por disvolvo de aplikaĵoj, estas skribita en C ++, sed uzebla en aliaj lingvoj per Bindings (en nia kazo PySide aŭ PyQt )

Diferencoj inter PySide kaj PyQt

Ĉefe

  • Permesilo, PySide estas rajtigita laŭ la kondiĉoj de la LGPL kaj PyQT laŭ la kondiĉoj de la GPL aŭ laŭ komerca licenco, do ni bezonus pagi kaze de kreo de fermita aplikaĵo.
  • PySide estas kreita de Nokia, kaj PyQt de RiverBank.
  • PySide ŝparas al ni la problemon uzi STR ĉiun fojon kiam ni uzas la QString de ĉiu el la QT-objektoj.

Ni povas detaligi la kompletajn ŝanĝojn Kies.

Preparado:

Ni instalas Qt:

Se ni havas distribuon kun Kde, ni jam havu tion, kion ni bezonas, se ne:

sudo apt-get install qt4-dev-tools

Ni instalas PySide:

sudo apt-get install pyside pyside-tools

Nia Unua Apliko Python + QT

Ni iras al nia plej ŝatata tekstredaktilo, mi rekomendas al vi instali sublime-text2, sed vi povas uzi tiun, kiun vi preferas, kaj ni tajpas la jenan kodon kaj konservas ĝin per la nomo, kiun ni volas, ĉiam finiĝante per la etendaĵo ".py" , Mi volas Mi konservos kiel app1.py:

3

Vidu Kodo

Ni kuras ĝin de la konzolo tiel:

python app1.py

Ĉi tiu fenestro devas aperi

 

2

 

Kio? Nur tio, ĉar se vi nur havis konzolon antaŭe, pri kio vi plendas? Kion vi atendis, Erp? venu viro, io komenciĝas.

Nun ni klarigu la kodon:

from PySide.QtGui import *

from sys import exit, argv

Ĉi tie ni importas la necesajn modulojn por PySide-ekzekuto.

app = QApplication(argv)

Ni kreas la Qapplication-ekzemplon per la nomo-programo.

window = Qwidget()

Ni kreas la ekzemplon QWidget ().

window.setWindowTitle("Primera App PySide")

Ni ekzekutas la setWindowTitle-metodon, kiu ricevas String kiel parametron por "agordi" la titolon de nia Qwidget.

window.show()

Ni montras nian fenestron

exit(app.exec_())

fine ni ekzekutas la senfinan ekzekutciklon de nia QApplication ().

danke

Dankon pro tiuj, kiuj sekvis min ĉi tie kaj estis utilaj. Por la sekva lernilo mi klarigos kiel desegni niajn fenestrojn per QT Designer kaj importi ilin en niajn projektojn.

Aldone, mi aldonas la ligon al la forumo de linux, kie mi havas malgrandan temon kun malgranda biblioteko de pitonaj lerniloj kaj gvidiloj, kiu enhavas malsamajn terminojn, kiuj inkluzivas:

Bazaj Python-lerniloj

wxPython

PyQt kaj PySide

Django

web2py

Scienca programado en pitono.

Kaj multe pli.

LIGO AL LA FORUMO

Mi esperas, ke ili servos vin, mi adiaŭas, kiel ĉiam plezuro aparteni al ĉi tiu mirinda komunumo.

 


La enhavo de la artikolo aliĝas al niaj principoj de redakcia etiko. Por raporti eraron alklaku Ĉi tie.

41 komentoj, lasu la viajn

Lasu vian komenton

Via retpoŝta adreso ne estos eldonita. Postulita kampojn estas markita per *

*

*

  1. Respondeculo pri la datumoj: Miguel Ángel Gatón
  2. Celo de la datumoj: Kontrola SPAM, administrado de komentoj.
  3. Legitimado: Via konsento
  4. Komunikado de la datumoj: La datumoj ne estos komunikitaj al triaj krom per laŭleĝa devo.
  5. Stokado de datumoj: Datumbazo gastigita de Occentus Networks (EU)
  6. Rajtoj: Iam ajn vi povas limigi, retrovi kaj forigi viajn informojn.

  1.   @ fido17 diris

    Dankon pro la afiŝo!

  2.   Anubo diris

    2 aferoj:

    1. Qt ne estis origine disvolvita de Nokia, sed de Trolltech, kiu poste estis aĉetita de Nokia. Ĉi-lasta tiam vendis Qt al Digia.
    2. La bildo en la unua aplika ekzemplo ne kongruas kun la kodo.

    Dankon pro la lernilo, mi sekvos ĝin 🙂

    1.    f3niX diris

      Vi tute pravas, ke mi maltrafis ĝin. Kaj la dua afero, kiun vi ankaŭ pravas, estas, ke mi ŝanĝis ĝin por faciligi ĝin kaj ne uzi klason, kaj mi maltrafis la modifajn erarojn por komencantoj. Mi jam pasigas la korektojn por ke iu redaktoro aprobu ilin.

    2.    f3niX diris

      Mi ne povas modifi ĝin, mi lasas ĝin al iu redaktoro.

      Salutojn.

      1.    neysonv diris

        Retpoŝti redaktoron per la korektita lernilo. vi povas sendi ĝin al la retpoŝto de @nano, kiu estas unu el la redaktantoj
        mailto: nano.world.contact@gmail.com
        bonvolu ne forlasi la lernilon tiel
        salutojn

  3.   Germana diris

    Unu afero frapas min: kial vi uzas "de importo *" en via kodo?

    Dankon!

    1.    f3niX diris

      Ĝi estas la ĝusta maniero importi, kiam vi importas tiel, vi diras al ĝi, kiun specifan klason de la modulo vi volas importi, kaj vi ne nomas la tutan modulon.

      Salutojn.

      1.    Germana diris

        Mi trovas tian konfuzan. Krome, ĝi ne rekomendas en PEP8:

        "Komercaj importadoj (de modula importado *) devas esti evititaj, ĉar ili ne klarigas, kiuj nomoj ĉeestas en la nomspaco, konfuzante ambaŭ legantojn kaj multajn aŭtomatajn ilojn ..."

        1.    f3niX diris

          Min gvidis plejparte profesiaj kodoj, kiel ekzemple Ninja-Ide, vi povas vidi la kodon ĉi tie: https://github.com/ninja-ide/ninja-ide/blob/master/ninja_ide/core/ipc.pyĜi fariĝas ankaŭ en PyQt, sed iel ajn nenio devigas vin uzi unu aŭ la alian formon.

          Ĉi tie vi povas vidi diskuton pri StackOverflow pri tio:

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

          Tie ili mencias avantaĝojn kaj malavantaĝojn de ĉiu el la stiloj.

          1.    f3niX diris

            bone pardonu ke mi ne komprenis vin, mi scias tion, mi faris ĝin nur ĉar mi ne intencis doni klarigon pri ĉiu elemento QApplication, QWidget, tiam ĝeneraligu sed vi tute pravas.

            Pardonu la miskomprenon.

          2.    Germana diris

            Ne, vi ne komprenis aŭ vi ne atentis ... Mi celas uzi «de modula importado *», tio estas, mi celas la «asteriskon» ... en tiu afiŝo de StackOverflow ili parolas pri io alia, sed ili tamen emfazas ĝin:

            "Ambaŭ metodoj estas akcepteblaj, sed ne uzu de modula importado *."

            Ĉu ĝi kompreniĝas nun?

          3.    felipe diris

            La germana pravas. Kio estas la uzo de la modula importado se vi importas la tutan enhavon per la asteriko, por tiu importa modulo. Slds same bela afiŝo.

          4.    Germana diris

            Ahh nu, nun mi komprenas ... ĉiuokaze, ne prenu min tro longe, mi ankaŭ estas komencanto en Python. Se vi preterpasos mian blogon, vi vidos, ke mi faris afiŝon similan al via, sed kun Gtk + 3 per PyGObject.

            Saluton kaj dankon!

        2.    f3niX diris

          Jen mi lasas la Pep8, en la hispana rekomendante la uzon de im
          Estas tre malrekomendinde uzi relativajn importojn por importi kodon de pako. Ĉiam uzu la absolutan pakan vojon por ĉiuj importoj. Eĉ nun, kiam PEP 328 [7] estas plene efektivigita en Python 2.5, uzado de relativaj importadoj estas grave malinstigita; absolutaj importoj estas pli porteblaj kaj kutime pli legeblaj.

          Kiam vi importas klason de modulo, kutime estas ĝuste fari tion
          de myclass importi MyClass
          de foo.bar.yourclass importu Vian Klason

          salutoj

          1.    ĉasisto diris

            Legu ĉi tion: http://stackoverflow.com/questions/3615125/should-wildcard-import-be-avoided

            Alex Martelli (kerna programisto) rekomendas ion tian:


            from PyQt4 import QtCore, QtGui

  4.   MSX diris

    Mi volis pli, por kiam la 2a parto!?
    Salutojn 🙂

  5.   eliotime3000 diris

    Tre bonaj lerniloj, krome eble estus pli komforte programi.

  6.   ĉasisto diris

    Jen ekzemplo de interfaco de nulo (sen uzi QtDesigner).

    https://github.com/xr09/metrocontador

    1.    f3niX diris

      La dhunter-programo estas bonega, ĉi tie ni eĉ ne scias, kiom ili ŝargas nin por elektro, haha ​​salutojn.

      1.    ĉasisto diris

        Dankon, ĝi estas unu el tiuj programoj, kiujn oni faras por persona uzo kaj servas al aliaj. Ĉi tie en Kubo la kvitanco estas listigita kun la imposto, estas facile kopii la algoritmon.

  7.   Jose Eloy diris

    Mi estos tre konscia pri ĉi tiu kurso. Mi delonge interesas fari diversplatformajn aplikojn kaj mi pensas, ke la kombinaĵo Python + QT / Pyside estas bonega eblo. Salutojn kaj gratulojn pro la iniciato

  8.   Bryan Rodriguez diris

    Mi sekvis ĉiujn paŝojn ĝuste kiel vi diras, sed kiam mi lanĉas la programon app1.py en la fina stacio, ĝi diras al mi Traceback (plej freŝa voko laste):
    Dosiero "app1.py", linio 1, en
    de PySide.QtGui importado *
    ImportError: Neniu modulo nomata PySide.QtGui. Por kio estas ĉi tio ?.

    1.    felipe diris

      tio estas ĉar vi uzas version de python kiel defaŭltan interpretilon, sed vi ne havas kamparan instalitan por tiu versio.

      Provu aldoni komence de la dosiero:
      #! usr / bin / python3
      alie
      #! usr / bin / python2

      Mi rekomendas vin uzi Eklipson kun pydev kaj agordi la interpretilon bone.
      slds

      1.    felipe diris

        #! / usr / bin / python3
        alie
        #! / usr / bin / python2

        1.    f3niX diris

          PySide ankoraŭ ne kongruas kun Python3, zorgu pri tio, kaj due, ĝi kontrolas la importojn per la interaga python-konzolo, do vi scias, ke vi havas ĝin instalita aŭ ne, ĝi ankaŭ instalas pip.

          1.    Bryan Rodriguez diris

            Kiel mi konfirmas ĝin?

          2.    f3niX diris

            En konzolo uzu "Python", ĉiuokaze mi rekomendas vin eniri la bibliotekon, kiun mi lasis sube en la afiŝo, kaj elŝuti "python por ĉiuj", vi bezonas pli da bazo.

            Salutojn kaj bonŝancon.

          3.    Bryan Rodriguez diris

            Koran dankon, ĝi tre helpis min.

          4.    Mauricio Tobares diris

            rigardu amiko F3niX Mi trovis ĉi tion, ŝajnas ke por python 3.3.2 ĉe fenestroj (kio estas ĝis la venonta semajno) ili havas duumaĵojn por 32 bitoj kaj 64 bitoj, mi provis vian ekzemplon kaj ĝi funkcias kun python 3.3.2 kaj Mi uzas La PyScripter, kiu instalas malsamajn mediojn, se vi malfermas la python 3, ĝi rulas la skriptojn kiel python 3 kaj se vi malfermas la 2.7 ĝi ekzekutas ilin kiel 2.7 kaj tiel plu (logike vi devas havi tiun version de python instalita ... ĝi komprenas)

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

            Mi lasos vin tie, klaĉo, eble ĝi utilos al iu alia 😀

      2.    Bryan Rodriguez diris

        Mi ricevas la saman eraron.

        1.    Germana diris

          Ĉu vi havas PySide instalita?

          1.    Bryan Rodriguez diris

            Mi instalis ĝin.

        2.    felipe diris

          Kaj provu per PyQT4 instali ĝin kaj poste ŝanĝi la PySide-liniojn por PyQT4 aŭ PyQt4, kaj lanĉu ĝin. jojo. Uzu la eklipson. Ŝanco.

          1.    Bryan Rodriguez diris

            Kiel mi faras tion ?.

  9.   karlinux diris

    Dankegon !!! Atendante la duan ĉapitron

    1.    f3niX diris

      Por ĉi tiu vendredo mi eble publikigos ĝin (La universitato havas min iomete plena) salutojn.

  10.   MauricioTobares diris

    Amiko F3nIX Mi atendas vian lernilon N ° 2, 3, 4 ... N hehehe

    Mi jam havas mian tre elegantan linukson instalitan kun la PySide atendanta kaj ĉio!

    Ni vidu, kiam li kuraĝigos montri novan instruiston 😀

    1.    f3niX diris

      Pardonu min amiko, mi havas ĝin en projektoj, sed laboro kaj studoj ne donis al mi tempon, mi promesas eltiri ion ĉi-semajne.

      Grandan saluton

  11.   Dante diris

    Saluton, mi delonge interesas lerni Python sed mi havas iujn dubojn. Kion mi volas estas fari programon por iom plibonigi la informan procezon de la familia entrepreno, kie mi laboras, mi ŝatus fari ion por fenestroj, kun fenestroj unue, ĝi funkcius ĉio sur unu komputilo kaj poste ke ĝi povas estu konektita per interreto al la datumbazo al kiu konektus paro da komputiloj. Estas multe da diverseco rilate al Gvidado de la aplikaĵo kaj tio kapturnigas min. Kion vi rekomendas por doni al ĝi modernan kaj allogan aspekton? Mi ankaŭ farus iujn statistikajn grafikaĵojn kaj presus raportojn, kion mi povas uzi por tio? salutojn

  12.   jorge diris

    Saluton, tre bone, via afiŝo, mi havas demandon, ĉu mi povus vendi mian programon faritan kun kamparo senprobleme?

    1.    f3niX diris

      Nu, licencoj estas ĉiam frenezaj, sed liberaj programaj permesiloj ankaŭ permesas vin vendi programojn, kio okazas estas, ke la GPL devigas vin disdoni la kodon, male al la LGPL, kiu ne devigas vin fari tion.

      Ĉiukaze mi ne estas spertulo pri rajtigado.

      Salutojn.