„PyGTK 3“: mini GUI mokymo programa su „Python + GTK + 3“

Mes ketiname sukurti nedidelę programą su PyGTK 3.0, kuri taip pat tinka PyGTK 3.4. Ši maža GUI išmokys jus padalinti programą į du ar daugiau failų.

Galite apsilankyti naujojo „PyGTK 3“ Sebastiano Pölsterlio pamokoje, čia yra nauja pamoka, aš palieku nuorodą:

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

Tai Sebastiano tinklaraštis.

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

Viena šios Sebastiano pamokos kritika yra ta, kad joje nemokoma padalinti programos į dalis ar į kelis failus, būtų buvę gerai, jei jis parodytų pavyzdį, kaip tai padaryti su PyGTK 3.

Visos didelės ir sudėtingos programos yra suskirstytos į daugelį failų, o failai netgi dedami į kitus katalogus, tai yra, jie yra skirtinguose aplankuose.

Pradėkime nuo mažo pavyzdžio:

Čia yra rašymo kodas viename faile, vadinamame gui.py. Atidarome „Gedit“ teksto redaktorių arba labiausiai naudojamą redaktorių, nukopijuojame žemiau esantį kodą ir išsaugome jį kaip gui.py

iš gi.repository importuoti Gtk klasę gui (): def on_open_clicked (self, button): print "\" Open \ "button was clicked" def on_close_clicked (self, button): print "Uždaroma programa" Gtk.main_quit () def __init__ (self): self.window = Gtk.Window () self.window.connect ('delete-event', Gtk.main_quit) self.box = Gtk.Box () self.window.add (self.box) self. mygtukas = 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 = 'Uždaryti') self.button.connect ("spustelėjo", self.on_close_clicked) self.box.pack_start (self.button, True, True, 0) self.window.show_all () Gtk.main () if __name__ == '__main__': gui = gui ()

frontonas

def on_open_clicked (savarankiškai, mygtukas): Spausdinti "\" Atidaryti \ "mygtukas buvo spustelėtas"

Tai funkcija, kuri suaktyvinama terminale, kai spustelėsime atidarymo mygtuką. Signalas jį suaktyvinti yra:

self.button.connect ("clicked", self.on_open_clicked) def on_close_clicked (self, button): print "Uždaroma programa" Gtk.main_quit ()

Tai funkcija, kuri įjungiama spustelėjus mygtuką Uždaryti.

uždarykite vykdomą programą.

signalas jį suaktyvinti yra

self.button.connect ("clicked", self.on_close_clicked) iš gi.repository importo Gtk ### mes iškviečiame PyGTK bibliotekas ### class gui (): ### klasės apibrėžimas vadinamas gui yra pagrindinė klasė # ##

Valdiklių deklaravimas: valdikliai yra programa, kurią iš anksto nustato GUI bibliotekos, kurias naudojame. Pvz., Valdikliai yra mygtukas, langas, langelis ir kt. Tai yra valdikliai, kuriuos deklaruojame savo programoje.

self.window = Gtk.Window () ### window ### self.box = Gtk.Box () ### box #### self.button = Gtk.Button (label = 'Open') ### # atidarymo mygtukas #### self.button = Gtk.Button (label = 'Close') #### uždarymo mygtukas #### self.window.add (self.box) #### langelis yra langas, vadinamas langu #### self.box.pack_start (self.button, True, True, 0) ##### mygtukas yra laukelyje, pavadintame langelyje ### self.window.show_all () ## # mes parodysime visą langą ### gui = gui () ### sukurti gui objektą ####

Savo programą dedame į aplanką, paprastu vadinamą darbalaukyje

vaisingas

Mes atidarome aplanką su terminalu, mano atveju aš naudoju „Nemo“ iš „Linux Mint 14“.

uždarytas

Norėdami sukompiliuoti, įdėjome į terminalą python gui.py

pamatyti paveikslėlį.

terminalas

Dabar galime pamatyti mūsų mažą programą ar naują valdiklį, sukurtą naudojant „PyGTK 3“ bibliotekas

Tai paprastas langas su dviem mygtukais.

untitled

Dabar programą padalijame į tris dalis, tada palieku trijų failų kodą.

Pirmasis „gui.py“ failas

iš gi.repository importuoti Gtk iš sunaikinti import sunaikinti iš io importuoti io klasę gui (sunaikinti, io): def __init __ (self): 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 ()

Antrasis „io.py“ failas

class io: def on_open_clicked (self, button): print "\" Atidaryti \ "mygtukas buvo spustelėtas"

Trečias failas destr.py

iš gi.repository importuoti Gtk klasę sunaikinti: def on_close_clicked (savarankiškai, mygtukas): spausdinti „Uždaroma programa“ Gtk.main_quit ()

Mes patalpiname tris failus tame pačiame aplanke, aplankas vadinamas paprastu dalijimu.

paprastas

Norėdami sudaryti tris bylas. Mes atidarome aplanką su terminalu ir paprasčiausiai įdėkite jį atgal į terminalą

python gui.py

„Gui.py“ kodo pakeitimai

iš sunaikinti importuoti sunaikinti ### pareiškimą importuoti failą pagrindinis pridedame poklasius sunaikinti ir io ####

Matote, kad sakinys

def on_open_clicked (savarankiškai, mygtukas): Spausdinti "\" Atidaryti \ "mygtukas buvo spustelėtas"

Jo nėra gui.py, jis yra io.py faile

Sakinys

def on_close_clicked (savarankiškai, mygtukas):

spausdinti „Uždarymo programa“
Gtk.main_quit ()

jis yra faile destr.py

Taigi galime programą padalinti į daugelį failų, esančių skirtinguose kataloguose tuo pačiu metu.

Kita vertus, „Python“ yra laisvos programinės įrangos ramstis ir jis pritaikytas dirbti su GTK 3.6 /3.8, jo pavadinimas yra PyGTK. „Python“ pritaikymas KDE vadinamas „PyQT“.

„Python“ pritaikytas „Mac OS“ ir „WINDOWS“.

Tikiuosi, kad ši „PyGTK3“ mini pamoka jums buvo naudinga. Jie gali pateikti visą norimą konstruktyvią kritiką.

Taip pat žinau kai kuriuos „Gtk 3.4 /3.6“ ir „Vala GTK 3.4 / 3.6“.

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

Galiausiai, KDE vartotojai atsiprašo, kad nedarė mini mokymo programos KDE.


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.   Puvimas87 sakė

    Kde aš norėčiau naudoti kdevelop (manau, kad taip vadinama), kad galėčiau lengvai sukurti gui, bet man vis dar sunku rasti procesų, kad tai įvyktų x dalykas:

  2.   st0rmt4il sakė

    Puiku tiems iš mūsų, kurie naudojasi Python: D!

    Sveiki atvykę!

  3.   pablo sakė

    Sveiki, aš ilgai stebiu šią bendruomenę ir nesu labai tikras, ar tai yra pirmas kartas, kai aš komentavau, ar aš tai dariau anksčiau 😀 (man nėra labai duota rašyti komentarus internete). Reikalas tas, kad aš tai darau norėdamas palikti Elavui ir KZKG ^ Gaarai kaip administratoriams pasiūlymą, ir manau, kad būtų gera idėja pridėti sintaksės papildinį, nes pastaruoju metu matau daugiau įrašų su kodu skirtingomis programavimo kalbomis. Žinau, kad yra nemažai įskiepių, bet aš jų neišbandžiau, nes nesu „WordPress“ vartotojas, todėl palieku galvoti apie užklausos perspektyvumą. Naudodamasis proga paklausiu likusių skaitytojų, ką jie mano apie idėją, nes žinau, kad yra žmonių, kurie mieliau skaito kodą be jokio puošmenos. Atsiprašau, jei čia jau buvo pakomentuota ir dėl kažkokių priežasčių buvo atmesta, nes nepamenu, kad būtų diskutuota šia tema.

    1.    marianogaudix sakė

      Tiesa ta, kad norėčiau turėti galimybę nuspalvinti sintaksę, kad paryškintumėte programavimo kalbų kodą.
      Tai padėtų vartotojams, norintiems išmokti programavimo kalbų.

      Bet ei, man taip pat patinka forumas ir kad mes galime kartu diskutuoti ir mokytis.

      1.    3000 sakė

        „GNU Emacs“ yra patogesnis, nes bent jau turite pasirinkti, kurioje programavimo kalbos tikrintuvoje norite dirbti (jei nenorite, kad jūsų procesorius turėtų daugiau svorio, naudokite „GNU Nano“ ir mėgaukitės kuo puikiausiai minimalizmu).

        1.    marianogaudix sakė

          Elio estamos hablando de Worpress . Implementado en el blog Desde Linux. No tiene las funciones para dar color a las letras de los posteos .

          1.    3000 sakė

            Oi, atsiprašau.

        2.    92. kas yra? sakė

          „Naaa emacs“ patogus tiems, kurie turi 84 pirštus XD .., normaliems žmonėms, teksto draugui, sublimetextui ar bloknotui ++ xd

          1.    3000 sakė

            Neįtikėtina tai, kad neišmokote spausdinti, o tai reikalinga norint gerai valdyti „GNU Emacs“ ir jo sparčiuosius klavišus. Be to, dėl jo GUI palengvina meniu naudojimą (jis gali būti naudojamas sistemoje „Windows“, tačiau nerekomenduojamas tai daryti įprastu režimu, o komandų eilutės režimu, kad „Win32“ neb boikotuotų jūsų scenarijaus).

  4.   Carper sakė

    Labai šauni pamoka. Bet, beje, pitono šaltinio kodas nėra sudarytas, tai yra aiškinama kalba.

    1.    Giskardas sakė

      Jis gali būti sudarytas pagal pseudo kodą. Ne mašininė kalba, o baitai kažką reiškia vertėjui, tačiau procesas taip pat vadinamas sukompiliuotu. Šia prasme galima sakyti, kad kažkas yra surašyta.

  5.   hty sakė

    Galbūt geriau išmokti „pytgk2“, nes naujausia „Windows“ versija yra 2.24. 3 serija yra akivaizdi savo nebuvimu. O blogi liežuviai sako, kad gnomas sulaužo visus apikus kiekvienoje naujoje versijoje.

    1.    marianogaudix sakė

      Aš programuoju maketą su GTK 3.4 / 3.6 ir tiesa ta, kad jie laužo jūsų kantrybę ir galvą, jūs turite perrašyti kodą, dabar aš suprantu, kodėl „Linux Mint“ žmonės skundžiasi GTK ir GNOME projektu.
      „MINT“ atstovams sutinku su „GTK 2.4“.

  6.   Carlos sakė

    Gera pamoka ir nuorodos.
    Tiesiog detalė, kadangi buvo įvestas kodas, „Python“ įtraukos yra privalomos ir kodo pavyzdyje turėtų būti laikomasi.

    Sveiki atvykę!

    1.    marianogaudix sakė

      Ar galite paaiškinti, ką sudaro privalomos „Python“ identifikacijos? Aš sakau jums tiesą, niekada to negirdėjau. Aš blogai pripratau prie „PyGTK 2/3“ forumų anglų kalba ir galbūt aš to nepastebiu.

      1.    Giskardas sakė

        „Python“ nenaudojate tokių raktų, kaip C, ar pradžios / pabaigos blokų, kaip „Pascal“, tačiau viskas suprantama per įtrauką, kurią suteikiate kodui. Tai reiškia, kad blokai pripažįstami įtrauktais. Tai savybė, kurią ypač mėgstu. Vengiate rašyti raktus ir panašius dalykus.

        1.    92. kas yra? sakė

          Man tai tiesiog nepatinka, atrodo paprasčiau įdėti du mažus klavišus arba „std :: endl;“, nei matyti, ar xd eilutė yra gerai suplanuota

          1.    Felipe sakė

            : p Programavimo mokytojas jums priskirs 0. Arba dar blogiau, jie atleis jus iš jūsų darbo. Svarbiausia yra tai, kad kodas yra įskaitomas su viskuo, kas reiškia

          2.    92. kas yra? sakė

            baigiant uždaromomis petnešomis, tai daro mane žymiai įskaitomesnį XD ..

          3.    Giskardas sakė

            Rimtai ???


            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);}

            Tu matai? Be įtraukų tai nėra labai gerai suprantama. Ir tai lengva. Sudėtingesnį supranta tik kompiliatorius. Reikalas tas, kad jūs vis tiek PRIVALOTE padaryti įtrauką (kad žmonės suprastų kodą), kodėl turėtumėte būti nereikalingi ir naudoti separatorius? Užtenka įdubimų ir tiek.

          4.    92. kas yra? sakė

            Žinoma, nieko nesuprantama, nes jūs negerbiate c / c ++ programos gero rašymo taisyklių. Tai, ką jūs padarėte, tinka bet kam, pvz., Įdėjus funkciją į kitą funkciją, esančią kitos funkcijos viduje, tada noriu jus pamatyti xd, jei sugebate tai suprasti.

          5.    92. kas yra? sakė

            beje, dviem žvilgsniais tas kodas lengvai suprantamas xD

          6.    Giskardas sakė

            Tai, ką padariau, padariau tyčia, norėdamas parodyti jums, kad be įtraukų, nors ir kompiliuojama, nepaprastai sunku suprasti bet kokį kodą. Taigi turite dvi taisykles: įtrauka ir apimtis su skiriamaisiais. Bet tai yra nereikalinga. „Python“ vertėjas tiesiog nepriima tokio kodo. Ir jūs turite tik vieną taisyklę: įtrauka. Lengva.
            Bet ei, visi su savo skoniu.

          7.    Atėjus sakė

            Abi yra geros, įtrauktos ir neįtrauktos, mano nuomone, man labiau patinka kabliataškio stilius arba rubinas, panašus į pitoną, tačiau įtrauka nėra būtina.

            Taip geriau suprantama: P:

            echo 'int main (int argc, char * argv []) {program_name = argv [0]; o ((argc> 1) && (argv [1] [0] ==' - ')) {jungiklis (argv [ 1] [1]) {atvejis „v“: verbose = 1; break; case 'o': out_file = & argv [1] [2]; break; case 'l': line_max = atoi (& argv [1] [2]); break; default: fprintf (stderr, »Bloga parinktis % 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;'

            Sveikinimai 😀

      2.    Giskardas sakė

        Manau, kad Carlosas reiškia, kad ten, kur išeina kodas, nėra įtraukų. Tai su „copy & paste“ tiesiog neveiks. Nežinau, ar kuriant įrašą egzistuoja žyma įvesti kalbos kodą. Būtų gerai, jei jie tai pasakytų, jei jos nėra.

        1.    Giskardas sakė

          Aš jau mačiau, kokia yra problema: CODE žymė pašalina visas tarpus ir skirtukus (tai neturėtų to padaryti !!!) Bet jei jūs įdėsite nbsp, tada kodas atrodys gerai. A0 šešioliktainėje (160 dec.), Nors manau, kad tai gali priklausyti nuo šrifto (nežinau). Jei jis naudojamas, jis išeina taip:

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

          Tai mano bandymuose atrodo gerai, bet aš neturiu peržiūros, kai skelbiu atsakymus (ir taip turėtų būti !!!) Jei tai neišeina, tai ne mano kaltė

          1.    marianogaudix sakė

            Pažvelkite į pavyzdžius, kuriuos Sebastianas Pölsterlas pateikia savo „PyGTK 3“ pamokoje. Sebastianas nededa etikečių.

            Pavyzdys :

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

            galite pamatyti visą Sebastiano pamoką.

          2.    Giskardas sakė

            Aš nežinau, ką tu nori pasakyti. Aš sakau, kad čia, įrašuose, negalima naudoti „HTML“ žymos „CODE“, kad tai, ką įdėsite kaip kodą, ir ji išeitų gerai. Nurodytame puslapyje, jei matote puslapio šaltinius, pamatysite, kad jis nenaudoja CODE, bet naudoja kitus HTML skiriklius.
            Tai neprieštarauja jūsų įvestam kodui, bet nurodo šios svetainės komandiravimo sistemos trūkumą. Tikriausiai tai gali išspręsti administratoriai.
            Kai kalbu apie žymes, akivaizdžiai kalbu apie HTML, o ne apie „Python“. Bet kokiu atveju, jei „Python“ įdėsite kodą be įtraukų, jis tiesiog neveiks. Jei ateina naujokas ir nukopijuoja kodą, koks yra šiame įraše, ir bando jį paleisti, jis nesugebės. Galite būti nusivylęs, nes esate naujokas. Vėlgi, kaltė nėra tavo; ir savo ankstesniame ankstesniame atsakyme, ką padariau, daviau būdą išspręsti problemą iš vartotojo, kuris rašo lygio.

          3.    marianogaudix sakė

            Jūs visiškai teisus, aš turėjau įkelti nuotraukas, o ne kopijuoti kodą.
            parodyti, kaip PyGTK 3 tinkamai išdėstyti teiginiai.

  7.   Felipe sakė

    Norint programuoti su python, rekomenduoju naudoti „Eclipse“ su „PyDev“ įskiepiu arba „Pychar m“

  8.   Louis sakė

    Kaip minėta pirmiau, todėl man nepatinka pitonas dėl įpjovimų. Kaip matėme, kopijavimas ir įklijavimas neveiks, o tai nenutinka su kitomis kalbomis, tokiomis kaip C, Java, PHP ir kt.

    Skaitomumo dalykas, mes pritaikome kodo gražinimo priemonę (pvz., http://indentcode.net/ ) ir paruoštas,

    Bjaurus yra pataisytas, bet jei nėra įtraukos ir logika yra pakeista, mes garsas ..

  9.   Carlos sakė

    PyGTK esu naujas, ar galima bendrauti su „shell“ scenarijais šia kalba?

    1.    Sveiki sakė

      Ačiū už pamoką.

      Sveikinimai.