PyGTK 3: mini-GUI õpetus koos Python + GTK + 3-ga

Teeme PyGTK 3.0-ga väikese programmi, mis töötab ka PyGTK 3.4 puhul. See väike graafiline kasutajaliides õpetab teid programmi jagamiseks kaheks või enamaks failiks.

Võite külastada Sebastian Pölsterli juhendit uue PyGTK 3 kohta, siin on uus õpetus, jätan lingi:

http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html

See on Sebastiani ajaveeb.

http://k-d-w.org/node/88

Üks Sebastiani antud õpetuse kriitika on see, et selles ei õpetata programmi osadeks või mitmeks failiks jagama, oleks olnud hea, kui ta oleks näidanud, kuidas seda PyGTK 3-ga teha.

Kõik suured ja keerukad programmid on jagatud paljudeks failideks ja failid paigutatakse isegi teistesse kataloogidesse, see tähendab, et nad asuvad erinevates kaustades.

Alustame väikesest näitest:

Siin on kirjutamiskood ühes failis nimega gui.py. Avame Gediti tekstiredaktori või enim kasutatava redaktori, kopeerime alloleva koodi ja salvestame selle kui gui.py

failist gi.repository import Gtk klass gui (): def on_open_clicked (ise, nupp): print "\" Ava \ "nuppu klõpsati" def on_close_clicked (ise, nupp): print "Sulgev rakendus" Gtk.main_quit () def __init__ (ise): self.window = Gtk.Window () self.window.connect ('delete-event', Gtk.main_quit) self.box = Gtk.Box () self.window.add (self.box) self. nupp = Gtk.Button (silt = 'Ava') self.button.connect ("clicked", self.on_open_clicked) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button ( label = 'Sule') self.button.connect ("clicked", self.on_close_clicked) self.box.pack_start (self.button, True, True, 0) self.window.show_all () Gtk.main () if __name__ == '__main__': gui = gui ()

pediment

def on_open_clicked (ise, nupp): print "\" Ava \ "nuppu klõpsati"

See on funktsioon, mis aktiveeritakse terminalis, kui klõpsame nuppu Ava. Selle aktiveerimise signaal on:

self.button.connect ("clicked", self.on_open_clicked) def on_close_clicked (self, button): print "Rakenduse sulgemine" Gtk.main_quit ()

See on funktsioon, mis aktiveeritakse, kui klõpsame sulgemisnuppu.

sulgege meie käivitatav programm.

signaal selle aktiveerimiseks on

self.button.connect ("clicked", self.on_close_clicked) gi.repository import Gtk ### kutsume PyGTK teegid ### class gui (): ### klassi määratlus nimega gui on põhiklass # ##

Vidinate deklaratsioon: vidinad on programm, mille on eelnevalt määranud meie kasutajaliidese teegid. Näiteks vidinad on nupp, aken, kast jne. Need on vidinad, mida me oma programmis deklareerime.

self.window = Gtk.Window () ### window ### self.box = Gtk.Box () ### box #### self.button = Gtk.Button (label = 'Open') ### # avamisnupp #### self.button = Gtk.Button (silt = 'Sule') #### sulgemisnupp #### self.window.add (self.box) #### kast asub aken nimega aken #### self.box.pack_start (self.button, True, True, 0) ##### nupp asub kastis nimega box ### self.window.show_all () ## # näitame kogu akent ### gui = gui () ### loo gui objekt ####

Me paigutame oma programmi kausta, mida nimetatakse töölaual meie jaoks lihtsaks

viljakas

Avame kausta terminaliga, minu puhul kasutan Linux Mint 14 Nemot.

suletud

Kompileerimiseks sisestasime terminali pythoni gui.py

vaata pilti.

terminal

Nüüd näeme PyGTK 3 teekidega loodud väikest programmi või uut vidinat

See on lihtne kahe nupuga aken.

Untitled

Nüüd jagame programmi kolmeks osaks, allpool jätan kolme faili koodi.

Esimene gui.py fail

gi.hoidlast import Gtk hävitamisest import hävitamine io impordist io klass gui (hävitama, io): def __init __ (ise): self.window = Gtk.Window () self.window.connect ('delete-event', Gtk .main_quit) self.box = Gtk.Box () self.window.add (self.box) self.button = Gtk.Button (label = 'Open') self.button.connect ("clicked", self.on_open_clicked ) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button (label = 'Close') self.button.connect ("clicked", self.on_close_clicked) self.box.pack_start (self.button, True, True, 0) self.window.show_all () Gtk.main () if __name__ == '__main__': gui = gui ()

Teine io.py fail

klass io: def on_open_clicked (ise, nupp): print "\" Ava \ "nuppu klõpsati"

Kolmas fail destr.py

failist gi.repository import Gtk klass hävitada: def on_close_clicked (ise, nupp): print "Sulgev rakendus" Gtk.main_quit ()

Kolm faili paigutame meie puhul samasse kausta, kausta nimetatakse lihtsaks jagatuks.

lihtne

Kolme faili koostamiseks. Avame terminaliga kausta ja paneme selle lihtsalt terminali tagasi

python gui.py

Gui.py koodis tehtud muudatused

alates hävitama import hävitama ### käsu meie faili importimiseks hävitama klassi peamine lisame alamklassid hävitama ja io ####

Näete, et lause

def on_open_clicked (ise, nupp): print "\" Ava \ "nuppu klõpsati"

Seda pole gui.py, see on io.py failis

Lause

def on_close_clicked (ise, nupp):

print "Sulgev rakendus"
Gtk.main_quit ()

see asub failis destr.py

Seega saame programmi jagada paljudeks failideks, mis asuvad korraga erinevates kataloogides.

Teiselt poolt on Python vaba tarkvara sammas ja see on kohandatud töötama GTK 3.6 /3.8-ga, selle nimi on PyGTK. Pythoni kohandust KDE jaoks nimetatakse PyQT-ks.

Python on kohandatud Mac OS-i ja WINDOWS-i jaoks.

Loodan, et see PyGTK3 miniõpetus on teile abiks olnud. Nad saavad esitada kogu sooviva konstruktiivse kriitika.

Tean ka mõnda Gtk 3.4 /3.6 ja Vala GTK 3.4 / 3.6.

http://www.youtube.com/watch?v=9ckRn_sx8CE

Lõpuks vabandavad KDE kasutajad, et nad KDE jaoks miniõpetust ei teinud.


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.

  1.   Mädaneb87 DIJO

    Kde-s eelistan gui loomiseks hõlpsasti kdevelopi (ma arvan, et seda nimetatakse), kuid mul on siiski raske leida protsesse selle juhtumiseks x asi: '(

  2.   st0rmt4il DIJO

    Suurepärane meile, kes me Pythoni kasutame: D!

    Tervitused!

  3.   Pablo DIJO

    Tere, ma olen seda kogukonda juba pikka aega jälginud ja ma pole eriti kindel, kas kommenteerin seda esimest korda või olen seda juba enne soja teinud (mulle pole eriti antud veebi kommentaare kirjutada). Asi on selles, et teen seda selleks, et jätta ettepanek Elavile ja KZKG ^ Gaarale kui administraatoritele ning minu arvates oleks hea mõte lisada süntaksi värvimiseks pistikprogramm nüüd, kui viimasel ajal näen rohkem postitusi koodiga erinevates programmeerimiskeeltes. Ma tean, et pistikprogramme on üsna palju, kuid ma pole neid proovinud, kuna ma pole WordPressi kasutaja, nii et jätan teile mõtte taotluse elujõulisuse üle. Kasutan seda võimalust ja küsin ülejäänud lugejatelt, mida nad sellest ideest arvavad, sest tean, et seal on inimesi, kes eelistavad koodi ilma ilustamata lugeda. Vabandan, kui seda on siin juba kommenteeritud ja see mingil põhjusel tagasi lükati, kuna ma ei mäleta, et oleksin sellel teemal arutanud.

    1.    marianogaudix DIJO

      Tõsi on see, et sooviksin võimalust värvida süntaks, et programmeerimiskeelte kood esile tõsta.
      See aitaks kasutajaid, kes soovivad õppida programmeerimiskeeli.

      Aga hei, mulle on ka foorum mugav ja et saame koos arutada ja õppida.

      1.    eliotime3000 DIJO

        GNU Emacs on mugavam, sest vähemalt peate valima, millises programmeerimiskeele kontrolleris soovite töötada (kui te ei soovi oma protsessorile suuremat kaalu, kasutage GNU Nano ja nautige parimal juhul minimalismi).

        1.    marianogaudix DIJO

          Elio räägime WordPressist. Rakendatud blogis Desde Linux. Sellel puuduvad funktsioonid postituste tähtede värvimiseks.

          1.    eliotime3000 DIJO

            Vabandust.

        2.    92 DIJO

          Naaa emacs on mugav neile, kellel on 84 sõrme XD .., normaalsed inimesed, tekstikaaslane, sublimetext või märkmik ++ xd

          1.    eliotime3000 DIJO

            Ebatõenäoline on see, et te pole õppinud kirjutamist, mis on vajalik selleks, et saaksite GNU Emacsi ja selle klaviatuuri otseteedega hästi hakkama saada. Lisaks muudab selle graafiline kasutajaliides teie menüüde kasutamise lihtsaks (seda saab kasutada Windowsis, kuid seda ei soovitata teha tavarežiimis, vaid käsuviipade režiimis, et win32 teie skripti ei boikoteeriks).

  4.   Carper DIJO

    Väga lahe õpetus. Kuid muide, pythoni lähtekoodi ei kompileerita, see on tõlgendatud keel.

    1.    giskard DIJO

      Selle saab kompenseerida pseudokoodiks. Tõlgile ei tähenda midagi masinkeel, vaid baidid, kuid protsessi nimetatakse ka kompileerituks. Selles mõttes on võimalik öelda, et midagi on koostatud.

  5.   hty DIJO

    Võib-olla on parem õppida pytgk2, sest uusim Windowsi jaoks saadaval olev versioon on 2.24. 3. sari on silmatorkav oma puudumise tõttu. Ja halvad keeled ütlevad, et gnome murrab igas uues versioonis kõik apid.

    1.    marianogaudix DIJO

      Programmeerin maketi GTK 3.4 / 3.6-ga ja tõsi on see, et need murravad teie kannatlikkust ja pead, peate koodi uuesti kirjutama, nüüd saan aru, miks Linux Mint'i inimesed GTK ja GNOME projekti üle kurdavad.
      MINTi omadega nõustun GTK 2.4-ga, seda ei juhtunud.

  6.   Carlos DIJO

    Hea õpetus ja viited.
    Lihtsalt detail, kuna kood on sisestatud, on Pythonis taanded kohustuslikud ja neid tuleks koodikoodis järgida.

    Tervitused!

    1.    marianogaudix DIJO

      Kas oskate selgitada, millest koosnevad Pythoni kohustuslikud identifikaatorid? Ma ütlen teile tõtt, ma pole seda kunagi kuulnud. Olen PyGTK 2/3 ingliskeelsete foorumitega halvasti harjunud ja võib-olla jätan selle kahe silma vahele.

      1.    giskard DIJO

        Pythonis ei kasutata võtmeid nagu C-s ega algus- / lõpplokke nagu Pascalis, kuid kõike mõistetakse koodile antud taande kaudu. See tähendab, et plokid on taandatud. See on funktsioon, mida ma eriti armastan. Väldite võtmete kirjutamist ja muud sellist.

        1.    92 DIJO

          Mulle see lihtsalt ei meeldi, tundub lihtsam panna kaks väikest võtit või std :: endl;, kui näha, kui xd-rida on hästi tabeldatud

          1.    Felipe DIJO

            : p Teie programmeerimise õpetaja paneb teile 0. Või mis veelgi hullem, nad vallandavad teid töölt. Kõige olulisem on see, et kood on loetav koos kõige sellega, mida see tähendab

          2.    92 DIJO

            lõpetades sulgudega, muudab see mind XD palju loetavamaks ..

          3.    giskard DIJO

            Tõsiselt ???


            int main(int argc, char *argv[]){program_name = argv[0];while ((argc > 1) && (argv[1][0] == '-')) {switch (argv[1][1]) {case 'v':verbose = 1; break;case 'o':out_file = &argv[1][2];break;case 'l':line_max = atoi(&argv[1][2]);break;default:fprintf(stderr,"Bad option %s\n", argv[1]);usage();}++argv;--argc;} if (argc == 1) {do_file("print.in");} else {while (argc > 1) {do_file(argv[1]);++argv;--argc;}}return (0);}

            Sa näed? Ilma taandeta pole sellest eriti hästi aru. Ja see on lihtne. Keerulisema puhul saab sellest aru ainult koostaja. Asi on selles, et kuna peate nagunii taanduma (et inimesed saaksid koodist aru), siis miks oleks see üleliigne ja kasutaks eraldajaid? Aitab taandest ja ongi kõik.

          4.    92 DIJO

            Muidugi ei saa midagi aru, sest te ei austa programmi hea kirjutamise reegleid c / c ++ keeles. See, mida te tegite, kehtib mis tahes kohta, näiteks funktsiooni pesitsemise kohta, funktsiooni sees teise funktsiooni sees, mis on teise sees, siis tahan teid näha xd, kui suudate sellest aru saada.

          5.    92 DIJO

            muide, kahe välimusega on see kood hõlpsasti mõistetav xD

          6.    giskard DIJO

            Mida ma tegin, tegin seda tahtlikult, et näidata teile, et ilma taandeta on vaatamata kompileerimisele ühestki koodist aru saada. Nii et teil on 2 reeglit: taandada ja hõlmata eraldajatega. Kuid see on üleliigne. Pythonis pole tõlk sellist koodi lihtsalt aktsepteerinud. Ja teil on ainult üks reegel: taane. Lihtne.
            Aga hei, kõik oma maitsega.

          7.    Atheyus DIJO

            Mõlemad on head, taandatud ja taandeta, minu arust eelistan semikoolonistiili või rubiini, sarnaselt pütooniga, kuid taandamine pole vajalik.

            Sellest saab paremini aru: P:

            echo 'int main (int argc, char * argv []) {programmi_nimi = argv [0]; samas ((argc> 1) && (argv [1] [0] ==' - ')) {switch (argv [ 1] [1]) {juhtum v: verbose = 1; break; case 'o': out_file = & argv [1] [2]; break; case 'l': line_max = atoi (& argv [1] [2]); break; vaikimisi: fprintf (stderr, »Vale variant % s \ n », argv [1]); use ();} ++ argv; –argc;} if (argc == 1) {do_file (" print.in ");} else {while (argc> 1 ) {do_file (argv [1]); ++ argv; –argc;}} return (0);} '| perl -p -e 's / \ {/ \ {\ n \ t / g; s / \; / \; \ n \ t / g; s / \ t \} / \} / g;'

            Tervitused 😀

      2.    giskard DIJO

        Ma arvan, et Carlos tähendab, et seal, kus kood välja tuleb, pole taandeid. See copy & paste abil lihtsalt ei tööta. Ma ei tea, kas postituse loomisel on silt olemas keelekoodi sisestamiseks. Oleks hea, kui nad selle välja paneksid, kui seda pole.

        1.    giskard DIJO

          Ma nägin juba, milles probleem on: CODE silt eemaldab kõik tühikud ja vahelehed (see ei tohiks seda teha !!!) Aga kui panete sellele nbsp, siis näeb kood hea välja. A0 kuusnurgas (160 dets.), Kuigi ma arvan, et see võib sõltuda fondist (ma ei tea). Kui seda kasutatakse, tuleb see välja nii:

          def fib(n):
              a, b = 0, 1
              while a < n:
                  print(a)
                  a, b = b, a+b

          Et minu testides näeb see hea välja, kuid mul pole vastuste postitamisel eelvaadet (ja see peaks olema !!!) Kui see välja ei tule, pole see minu süü 😉

          1.    marianogaudix DIJO

            Vaadake näiteid, mille Sebastian Pölsterl oma PyGTK 3 õpetuses esitab, Sebastian silte ei pane.

            Näide:

            http://python-gtk-3-tutorial.readthedocs.org/en/latest/entry.html#example

            näete kõiki Sebastiani õpetusi.

          2.    giskard DIJO

            Ma ei tea, mida sa mõtled. Mida ma ütlen, on see, et siin, postitustes, pole võimalik kasutada HTML-märgendit «KOOD», nii et see, mida te koodina panete, ja see tuleks hästi välja. Viidatud lehel näete lehe allikaid, et see ei kasuta CODE, vaid kasutab teisi HTML-i eraldajaid.
            See pole vastuolus teie sisestatud koodiga, vaid juhib tähelepanu selle saidi postitussüsteemi puudusele. Mida administraatorid võivad parandada.
            Kui ma räägin siltidest, siis ilmselgelt räägin HTML-ist, mitte Pythonist. Igal juhul, kui panete Pythonis ilma taandeta koodi, siis see lihtsalt ei toimi. Kui tuleb algaja ja kopeerib koodi, nagu see selles postituses kuvatakse, ja proovib seda käivitada, siis ta ebaõnnestub. Võite olla pettunud, kuna olete algaja. Jällegi, süü pole teie oma; ja oma otseses eelmises vastuses andsin ma võimaluse probleemi lahendamiseks kasutaja-kes-postituste tasemelt.

          3.    marianogaudix DIJO

            Teil on täiesti õigus, oleksin pidanud koodi kopeerimise asemel fotod üles laadima.
            näidata, kuidas PyGTK 3-s on avaldused õigesti järjestatud.

  7.   Felipe DIJO

    Püütoniga programmeerimiseks soovitan kasutada Eclipse'i koos pistikprogrammiga PyDev või Pychar m

  8.   Louis DIJO

    Nagu ülalpool kommenteeritud, siis just sellepärast ei meeldi mulle pütoon taandeprobleemi tõttu. Nagu nägime, ei hakka kopeerimine ja kleepimine toimima, mida ei juhtu teiste keeltega nagu C, Java, PHP jne.

    Loetavuse asi, rakendame koodi kaunistajat (näiteks http://indentcode.net/ ) ja valmis,

    Inetu on fikseeritud, kuid kui taandet pole ja loogika on muutunud, siis kõlame ..

  9.   Carlos DIJO

    Olen PyGTK-s uus, kas selles keeles on võimalik shelliskriptidega suhelda?

    1.    Tere DIJO

      Täname õpetuse eest.

      Tervitused.