PyGTK 3: mini GUI apmācība ar Python + GTK + 3

Mēs izveidosim nelielu programmu ar PyGTK 3.0, kas darbojas arī PyGTK 3.4. Šī mazā GUI iemācīs jums sadalīt programmu divos vai vairāk failos.

Jūs varat apmeklēt Sebastiana Pölsterla apmācību par jauno PyGTK 3, šeit ir jaunā apmācība, es atstāju saiti:

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

Šis ir Sebastiana emuārs.

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

Viena šīs Sebastiana apmācības kritika ir tāda, ka tajā netiek mācīts sadalīt programmu daļās vai vairākos failos, būtu bijis labi, ja viņš parādītu piemēru, kā to izdarīt ar PyGTK 3.

Visas lielās un sarežģītās programmas ir sadalītas daudzos failos, un faili pat tiek ievietoti citos direktorijos, tas ir, tie atrodas dažādās mapēs.

Sāksim ar nelielu piemēru:

Šis ir rakstīšanas kods vienā failā ar nosaukumu gui.py. Mēs atveram Gedit teksta redaktoru vai redaktoru, kuru mēs izmantojam visvairāk, nokopējam zemāk esošo kodu un saglabājam to kā gui.py

no gi.repository importēt Gtk klasi gui (): def on_open_clicked (self, button): print "\" Open \ "was clicked" def on_close_clicked (self, button): print "Aizverošā programma" Gtk.main_quit () def __init__ (pats): 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 = 'Aizvērt') self.button.connect ("noklikšķināts", self.on_close_clicked) self.box.pack_start (self.button, True, True, 0) self.window.show_all () Gtk.main () if __name__ == '__main__': gui = gui ()

frontons

def on_open_clicked (pats, poga): drukāt "\" Atvērt \ "poga tika noklikšķināta"

Tā ir funkcija, kas tiek aktivizēta terminālī, kad mēs noklikšķinām uz pogas Atvērt. Signāls tā aktivizēšanai ir:

self.button.connect ("clicked", self.on_open_clicked) def on_close_clicked (self, button): print "Programmas aizvēršana" Gtk.main_quit ()

Tā ir funkcija, kas tiek aktivizēta, kad mēs noklikšķinām uz pogas Aizvērt.

aizveriet mūsu vadīto programmu.

signāls tā aktivizēšanai ir

self.button.connect ("clicked", self.on_close_clicked) no gi.repository importēšanas Gtk ### mēs izsaucam PyGTK bibliotēkas ### class gui (): ### klases definīcija, ko sauc par gui, ir galvenā klase # ##

Logrīku deklarācija: logrīki ir programma, kuru iepriekš nosaka grafiskās saskarnes bibliotēkas, kuras mēs izmantojam. Piemēram, logrīki ir poga, logs, lodziņš utt. Tie ir logrīki, kurus mēs deklarējam savā programmā.

self.window = Gtk.Window () ### window ### self.box = Gtk.Box () ### box #### self.button = Gtk.Button (label = 'Open') ### # atvēršanas poga #### self.button = Gtk.Button (label = 'Aizvērt') #### aizvēršanas poga #### self.window.add (self.box) #### lodziņš atrodas logs ar nosaukumu logs #### self.box.pack_start (self.button, True, True, 0) ##### poga atrodas lodziņā ar nosaukumu lodziņš ### self.window.show_all () ## # mēs parādām visu logu ### gui = gui () ### izveido gui objektu ####

Mēs ievietojam savu programmu mapē, kuru darbvirsmā sauc par vienkāršu

auglīgs

Mēs atveram mapi ar termināli, manā gadījumā es izmantoju Nemo no Linux Mint 14.

slēgts

Lai apkopotu, mēs ievietojam termināla python gui.py

skatiet attēlu.

termināls

Tagad mēs varam redzēt mūsu mazo programmu vai jauno logrīku, kas izveidots ar PyGTK 3 bibliotēkām

Tas ir vienkāršs logs ar divām pogām.

Untitled

Tagad mēs sadalām programmu trīs daļās, pēc tam es atstāju kodu trim failiem.

Pirmais gui.py fails

no gi.repository importēt Gtk no iznīcināt importēt iznīcināt no io importēt io klase gui (iznīcināt, 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 ("noklikšķināts", self.on_open_clicked ) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button (label = 'Aizvērt') self.button.connect ("noklikšķināts", self.on_close_clicked) self.box.pack_start (self.button, True, True, 0) self.window.show_all () Gtk.main () if __name__ == '__main__': gui = gui ()

Otrais io.py fails

klase io: def on_open_clicked (pats, poga): drukāt "\" Atvērt \ "poga tika noklikšķināta"

Trešais fails iznīcināt.py

no gi.repository importēt Gtk klasi iznīcināt: def on_close_clicked (self, button): print "Programmas aizvēršana" Gtk.main_quit ()

Mēs trīs gadījumus ievietojam vienā un tajā pašā mapē, mapi sauc par vienkāršu dalītu.

vienkāršs

Lai apkopotu trīs failus. Mēs atveram mapi ar termināli un vienkārši ievietojam to atpakaļ terminālā

python gui.py

Veiktas izmaiņas gui.py kodā

no iznīcināt importēt iznīcināt ### paziņojumu, lai importētu mūsu failu iznīcināt.py ### no io importēt io ### paziņojumu, lai importētu mūsu failu io.py ### class gui (iznīcināt, io): #### uz klasi galvenais mēs pievienojam apakšklases iznīcināt un io ####

Var redzēt, ka teikums

def on_open_clicked (pats, poga): drukāt "\" Atvērt \ "poga tika noklikšķināta"

Tas nav gui.py, tas ir io.py failā

Teikums

def on_close_clicked (pats, poga):

drukāt "Aizvēršanas programma"
Gtk.main_quit ()

tas atrodas failā destr.py

Tādējādi mēs varam sadalīt programmu daudzos failos, kas vienlaikus atrodas dažādos direktorijos.

No otras puses, Python ir bezmaksas programmatūras pīlārs, un tas ir pielāgots darbam ar GTK 3.6 /3.8, tā nosaukums ir PyGTK. Python pielāgošanu KDE sauc par PyQT.

Python ir pielāgots Mac OS un WINDOWS.

Es ceru, ka šī PyGTK3 mini apmācība jums būs noderīga. Viņi var izteikt visu vēlamo konstruktīvo kritiku.

Es zinu arī dažus Gtk 3.4 /3.6 un Vala GTK 3.4 / 3.6.

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

Visbeidzot, KDE lietotāji atvainojas, ka nedarīja mini apmācību KDE.


Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.

  1.   87 teica

    Kde es gribētu izmantot kdevelop (es domāju, ka tā to sauc), lai viegli izveidotu gui, bet man joprojām ir grūti atrast procesus, lai tas notiktu x lieta: '(

  2.   st0rmt4il teica

    Lieliski tiem no mums, kas izmanto Python: D!

    Sveicieni!

  3.   Pablo teica

    Sveiki, es jau ilgu laiku sekoju šai kopienai, un es neesmu ļoti pārliecināts, vai šī ir pirmā reize, kad es komentēju, vai arī es to jau izdarīju iepriekš 😀 (man nav ļoti dota iespēja rakstīt komentārus tīmeklī). Lieta ir tāda, ka es to daru, lai atstātu ieteikumu Elavam un KZKG ^ Gaara kā administratoriem, un es domāju, ka būtu lietderīgi pievienot sintakses krāsošanai paredzētu spraudni tagad, kad pēdējā laikā es redzu vairāk ziņu ar kodu dažādās programmēšanas valodās. Es zinu, ka ir diezgan daudz spraudņu, taču es neesmu izmēģinājis nevienu, jo es neesmu WordPress lietotājs, tāpēc es jums lieku padomāt par pieprasījuma dzīvotspēju. Es izmantoju šo iespēju un pajautāju pārējiem lasītājiem, ko viņi domā par šo ideju, jo es zinu, ka tur ir cilvēki, kuri dod priekšroku lasīt kodu bez jebkādas rotas. Es atvainojos, ja tas šeit jau ir komentēts un tas nez kāpēc tika noraidīts, jo neatceros, ka būtu redzējis diskusiju par šo tēmu.

    1.    marianogaudix teica

      Patiesība ir tāda, ka es vēlētos, lai būtu iespēja iekrāsot sintaksi, lai izceltu programmēšanas valodu kodu.
      Tas palīdzētu lietotājiem, kuri vēlas apgūt programmēšanas valodas.

      Bet, hei, man arī patīk forums un ka mēs varam kopīgi apspriest un mācīties.

      1.    3000 teica

        GNU Emacs ir ērtāk, jo vismaz jāizvēlas, kurā programmēšanas valodas pārbaudītājā vēlaties strādāt (ja nevēlaties, lai procesoram būtu lielāks svars, izmantojiet GNU Nano un izbaudiet minimālismu labākajā gadījumā).

        1.    marianogaudix teica

          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 teica

            Ak, piedodiet.

        2.    92 teica

          Naaa emacs ir ērts tiem, kam ir 84 pirksti XD .., normāliem cilvēkiem, tekstabiedram, sublimetext vai notepad ++ xd

          1.    3000 teica

            Neticami ir tas, ka neesat iemācījies rakstīt, kas nepieciešams, lai varētu labi rīkoties ar GNU Emacs un tā īsinājumtaustiņiem. Turklāt tā GUI atvieglo izvēlņu lietošanu (to var izmantot operētājsistēmā Windows, taču to nav ieteicams darīt ar parasto režīmu, bet gan ar komandu uzvednes režīmu, lai win32 boikotētu jūsu skriptu).

  4.   Carper teica

    Ļoti forša apmācība. Bet, starp citu, pitona avota kods nav apkopots, tā ir interpretēta valoda.

    1.    Giskards teica

      To var apkopot pēc pseido koda. Interpretētājam kaut ko attēlo nevis mašīnvaloda, bet gan baiti, bet procesu sauc arī par kompilētu. Šajā ziņā ir iespējams teikt, ka kaut kas ir sastādīts.

  5.   hty teica

    Varbūt labāk ir iemācīties pytgk2, jo jaunākā Windows pieejamā versija ir 2.24. 3. sērija ir pamanāma ar tās neesamību. Un sliktās mēles saka, ka rūķis katrā jaunajā versijā salauž visus apisus.

    1.    marianogaudix teica

      Es ieprogrammēju maketu ar GTK 3.4 / 3.6, un patiesība ir tāda, ka tie salauž jūsu pacietību un galvu, jums ir jāpārraksta kods, tagad es saprotu, kāpēc Linux Mint cilvēki sūdzas par GTK un GNOME projektu.
      MINT pārstāvjiem es piekrītu GTK 2.4. Tas nenotika.

  6.   Carlos teica

    Laba apmācība un atsauces.
    Tā kā kods ir ievietots, Python ievilkumi ir obligāti, un tie ir jāievēro koda piemērā.

    Sveicieni!

    1.    marianogaudix teica

      Vai varat paskaidrot, no kā sastāv obligātās Python identifikācijas? Patiesību sakot, es to nekad neesmu dzirdējis. Esmu slikti pieradis pie PyGTK 2/3 forumiem angļu valodā un varbūt to nepamanīju.

      1.    Giskards teica

        Python jūs neizmantojat tādus taustiņus kā C vai sākuma / beigu blokus, piemēram, Pascal, bet viss tiek saprasts caur kodu, kuru piešķirat kodam. Tas ir, bloki tiek atzīti par ievilktiem. Tā ir īpašība, kuru es īpaši mīlu. Jūs izvairāties rakstīt atslēgas un tamlīdzīgas lietas.

        1.    92 teica

          Man tas vienkārši nepatīk, šķiet vienkāršāk ievietot divus mazus taustiņus vai std :: endl;, nekā redzēt, ja xd līnija ir labi tabulēta

          1.    Felipe teica

            : p Jūsu programmēšanas skolotājs jums ieliks 0. Vai vēl ļaunāk - viņi jūs atlaidīs no darba. Vissvarīgākais ir tas, ka kods ir lasāms ar visu, ko tas nozīmē

          2.    92 teica

            beidzot ar aizdares stiprinājumiem, tas padara mani daudz lasāmāku XD ..

          3.    Giskards teica

            Nopietni???


            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 redzi? Bez ievilkumiem tas nav ļoti labi saprotams. Un tas ir viegli. Ar sarežģītāku to saprot tikai sastādītājs. Lieta ir tā, ka, tā kā jums tik un tā ir JĀ atkāpjas (lai cilvēki saprastu kodu), kāpēc jums vajadzētu būt liekam un izmantot separatorus? Pietiks ar atkāpi un viss.

          4.    92 teica

            Protams, nekas nav saprotams, jo jūs neievēro c / c ++ programmas labas rakstīšanas noteikumus. Tas, ko jūs darījāt, ir derīgs jebkuram, piemēram, funkcijas ligzdošanai, funkcijas iekšpusē citas funkcijas iekšpusē, tad es gribu jūs redzēt xd, ja jūs to spējat saprast.

          5.    92 teica

            starp citu, ar diviem skatieniem tas kods ir viegli saprotams xD

          6.    Giskards teica

            To, ko es darīju, izdarīju ar nodomu, lai parādītu jums, ka bez ievilkumiem, kaut arī tas apkopo, ir ārkārtīgi grūti saprast jebkuru kodu. Tātad jums ir 2 noteikumi: atkāpe un aptveriet atdalītājus. Bet tas ir lieks. Python tulks vienkārši nepieņem šādu kodu. Un jums ir tikai viens noteikums: atkāpe. Viegli.
            Bet hei, visi ar savām gaumēm.

          7.    Atejs teica

            Abi ir labi, ievilkti un bez ievilkumiem, manuprāt, es dodu priekšroku semikola stilam vai rubīnam, līdzīgi kā pitons, bet atkāpe nav nepieciešama.

            To labāk saprot: P:

            echo 'int main (int argc, char * argv []) {programmas_nosaukums = argv [0]; savukārt ((argc> 1) && (argv [1] [0] ==' - ')) {slēdzis (argv [ 1] [1]) {gadījums “v”: verbose = 1; break; case 'o': out_file = & argv [1] [2]; break; case 'l': line_max = atoi (& argv [1] [2]); break; noklusējums: fprintf (stderr, »Slikta opcija % 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; '

            Sveiciens 😀

      2.    Giskards teica

        Es domāju, ka Karloss nozīmē, ka tur, kur parādās kods, nav atkāpju. Tas ar copy & paste vienkārši nedarbosies. Es nezinu, vai tags pastāv, veidojot ziņu lai ievadītu valodas kodu. Būtu labi, ja viņi to ieliktu, ja tāda nav.

        1.    Giskards teica

          Es jau redzēju, kāda ir problēma: CODE tag noņem visas atstarpes un cilnes (to nevajadzētu darīt !!!) Bet, ja jūs uz tā ievietojat nbsp, kods izskatās labi. A0 hex (160 dec.), Lai gan es domāju, ka tas varētu būt atkarīgs no fonta (es nezinu). Ja to lieto, tas iznāk šādi:

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

          Ka manos testos tas izskatās labi, bet man nav priekšskatījuma, kad es ievietoju atbildes (un tam vajadzētu būt !!!) Ja tas neiznāk, tā nav mana vaina culpa

          1.    marianogaudix teica

            Apskatiet piemērus, kurus Sebastians Pīlsters ievieto savā PyGTK 3 apmācībā, Sebastians neliek uzlīmes.

            Piemērs :

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

            jūs varat redzēt visu Sebastiana apmācību.

          2.    Giskards teica

            Es nezinu, ko tu domā. Es saku, ka šeit, ierakstos, nav iespējams izmantot HTML tagu «CODE», lai tas, ko jūs ievietojat kā kodu, un tas iznāktu labi ievilkts. Jūsu norādītajā lapā, ja redzat lapas avotus, redzēsit, ka tajā netiek izmantots CODE, bet tiek izmantoti citi HTML atdalītāji.
            Tas nav pret jūsu ievietoto kodu, bet gan norāda uz kļūdu šīs vietnes norīkošanas sistēmā. Ko, iespējams, administratori var novērst.
            Kad es runāju par tagiem, es acīmredzami runāju par HTML, nevis par Python. Jebkurā gadījumā, ja jūs ievietojat kodu bez ievilkumiem Python, tas vienkārši nedarbosies. Ja atnāk iesācējs un nokopē kodu, kāds tas ir redzams šajā ierakstā, un mēģina to palaist, viņš neizdosies. Jūs varat būt neapmierināts, jo esat iesācējs. Atkal, vaina nav jūsu; un savā tūlītējā iepriekšējā atbildē es darīju veidu, kā atrisināt problēmu no lietotāja-kurš-sūtījumu līmeņa.

          3.    marianogaudix teica

            Jums ir pilnīga taisnība, koda kopēšanas vietā man vajadzēja augšupielādēt fotoattēlus.
            lai parādītu, kā PyGTK 3 tiek pareizi sakārtoti paziņojumi.

  7.   Felipe teica

    Lai programmētu ar pitonu, iesaku izmantot Eclipse ar PyDev spraudni vai Pychar m

  8.   Luikss teica

    Kā minēts iepriekš, tieši tāpēc man nepatīk pitons ievilkumu dēļ. Kā redzējām, kopēšana un ielīmēšana nedarbosies, kas nenotiek ar citām valodām, piemēram, C, Java, PHP utt.

    Lasāmības lieta, mēs izmantojam koda uzlabotāju (piemēram, http://indentcode.net/ ) un gatavs,

    Neglīts ir novērsts, bet, ja nav atkāpes un loģika ir mainīta, mēs izklausāmies ..

  9.   Carlos teica

    Esmu jauns PyGTK lietotājs, vai šajā valodā ir iespējams mijiedarboties ar čaulas skriptiem?

    1.    hola teica

      Paldies par apmācību.

      Sveicieni.