PyGTK 3: mion-rang teagaisc GUI le Python + GTK + 3

Táimid chun clár beag a dhéanamh le PyGTK 3.0 a oibríonn do PyGTK 3.4 freisin. Múinfidh an GUI beag seo duit conas clár a roinnt ina dhá chomhad nó níos mó.

Féadfaidh tú cuairt a thabhairt ar rang teagaisc Sebastian Pölsterl ar an PyGTK 3 nua, seo an rang teagaisc nua, fágaim an nasc:

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

Seo blag Sebastian.

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

Cáineadh a rinne Sebastian ar an rang teagaisc seo ná nach múineann sé conas clár a roinnt ina chodanna nó i roinnt comhad, b’fhiú go mór dá dtaispeánfadh sé sampla de conas é a dhéanamh le PyGTK 3.

Roinntear gach clár mór casta i go leor comhad agus cuirtear na comhaid fiú in eolairí eile, is é sin, tá siad lonnaithe i bhfillteáin éagsúla.

Tosaímid leis an sampla beag:

Seo an cód scríbhneoireachta i gcomhad amháin ar a dtugtar gui.py. Osclaímid eagarthóir téacs Gedit nó an t-eagarthóir a úsáidimid an chuid is mó, cóipeáil an cód thíos agus sábháil é mar gui.py

ó gi.repository import Gtk class gui (): def on_open_clicked (féin, cnaipe): cliceáil "\" Oscail \ "cliceáil" def on_close_clicked (féin, cnaipe): priontáil "Feidhmchlár deiridh" Gtk.main_quit () def __init__ (féin): self.window = Gtk.Window () self.window.connect ('delete-event', Gtk.main_quit) self.box = Gtk.Box () self.window.add (self.box) féin. cnaipe = Gtk.Button (label = 'Oscailte') self.button.connect ("cliceáil", self.on_open_clicked) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button ( label = 'Dún') self.button.connect ("cliceáil", self.on_close_clicked) self.box.pack_start (self.button, True, True, 0) self.window.show_all () Gtk.main () más __name__ == '__main__': gui = gui ()

tosaigh

def on_open_clicked (féin, cnaipe): cliceáil "\" Oscail \ "cliceáil"

Is feidhm í a ghníomhachtaítear sa teirminéal nuair a chliceálann muid an cnaipe oscailte. Is é an comhartha chun é a ghníomhachtú:

self.button.connect ("cliceáil", self.on_open_clicked) def on_close_clicked (féin, cnaipe): priontáil "Feidhmchlár deiridh" Gtk.main_quit ()

Is feidhm í a ghníomhachtaítear nuair a chliceálann muid ar an gcnaipe gar.

dún an clár a reáchtáilimid.

is é an comhartha chun é a ghníomhachtú

self.button.connect ("cliceáil", self.on_close_clicked) ó gi.repository import Gtk ### déanaimid agairt ar leabharlanna PyGTK ### class gui (): ### sainmhíniú ranga ar a dtugtar gui an príomh-aicme # ##

Dearbhú Giuirléidí: is éard atá i ngiuirléidí clár atá réamhshocraithe ag na leabharlanna GUI a úsáidimid. Mar shampla, is éard atá i ngiuirléidí cnaipe, fuinneog, bosca, srl. Seo iad na giuirléidí a dhearbhaímid inár gclár.

self.window = Gtk.Window () ### window ### self.box = Gtk.Box () ### bosca #### self.button = Gtk.Button (label = 'Oscailte') ### # cnaipe oscailte #### self.button = Gtk.Button (label = 'Dún') #### dún an cnaipe #### self.window.add (self.box) #### tá an bosca istigh an fhuinneog ar a dtugtar fuinneog #### self.box.pack_start (self.button, True, True, 0) ##### tá an cnaipe sa bhosca ar a dtugtar bosca ### self.window.show_all () ## # taispeánann muid an fhuinneog iomlán ### gui = gui () ### cruthaigh réad gui ####

Cuirimid ár gclár i bhfillteán ar a dtugtar simplí inár gcás ar an deasc

thorthúil

Osclaímid an fillteán leis an teirminéal, i mo chás úsáidim Nemo ó Linux Mint 14.

dúnta

Le tiomsú chuireamar an teirminéal python gui.py isteach

féach an pictiúr.

teirminéal

Anois is féidir linn ár gclár beag nó giuirléid nua a fheiceáil a cruthaíodh le leabharlanna PyGTK 3

Is fuinneog shimplí í le dhá chnaipe.

 

Untitled

 

Anois roinnimid an clár ina thrí chuid, ansin fágaim cód na dtrí chomhad.

An chéad chomhad gui.py.

ó gi.repository import Gtk ó scrios allmhairiú scrios ó io import io class gui (scrios, io): def __init __ (féin): 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 = 'Oscailte') self.button.connect ("cliceáil", self.on_open_clicked) self.box.pack_start (self.button, Fíor, Fíor, 0) self.button = Gtk.Button (label = 'Dún') self.button.connect ("cliceáil", self.on_close_clicked) self.box.pack_start ( féin.button, Fíor, Fíor, 0) féin.window.show_all () Gtk.main () más __name__ == '__main__': gui = gui ()

An dara comhad io.py

aicme io: def on_open_clicked (féin, cnaipe): cliceáil "\" Oscail \ "cliceáil"

An tríú comhad destroy.py

ó gi.repository import Gtk class destroy: def on_close_clicked (féin, cnaipe): priontáil "Feidhmchlár deiridh" Gtk.main_quit ()

Cuirimid na trí chomhad san fhillteán céanna inár gcás, tugtar an fillteán simplí roinnte.

simplí

Chun na trí chomhad a thiomsú. Osclaímid an fillteán leis an teirminéal agus cuirimid ar ais sa chríochfort é

python gui.py

Mionathruithe a rinneadh ar an gcód gui.py.

ó scrios allmhairiú scrios scrios ### ráiteas chun ár gcomhad destroy.py ### a allmhairiú ó io import io ### ráiteas chun ár gcomhad io.py ### class gui a scriosadh (scrios, io): #### chuig an príomh-rang cuirimid na scriosáin fo-aicmí agus io ####

Feiceann tú go bhfuil an abairt

def on_open_clicked (féin, cnaipe): cliceáil "\" Oscail \ "cliceáil"

Níl sé i gui.py, tá sé sa chomhad io.py.

Pianbhreithe

def on_close_clicked (féin, cnaipe):

priontáil "Feidhmchlár deiridh"
Gtk.main_quit ()

tá sé suite sa chomhad destroy.py

Mar sin is féidir linn clár a roinnt i go leor comhad atá lonnaithe in eolairí éagsúla ag an am céanna.

Ar an láimh eile, is colún de bhogearraí saor in aisce é Python, agus tá sé oiriúnaithe chun oibriú le GTK 3.6 /3.8, PyGTK an t-ainm atá air. Tugtar PyQT ar oiriúnú Python do KDE.

Tá Python oiriúnaithe do Mac OS agus WINDOWS.

Tá súil agam gur chuidigh an mionteagasc PyGTK3 seo leat. Is féidir leo na cáineadh cuiditheach uile a theastaíonn uathu a dhéanamh.

Tá aithne agam freisin ar roinnt Gtk 3.4 /3.6 agus Vala GTK 3.4 / 3.6.

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

Ar deireadh, Gabhann úsáideoirí KDE leithscéal as gan mion-rang teagaisc a dhéanamh do KDE.


Cloíonn ábhar an ailt lenár bprionsabail eitic eagarthóireachta. Chun earráid a thuairisciú cliceáil anseo.

33 trácht, fág mise

Fág do thrácht

Ní thabharfar do sheoladh r-phoist a fhoilsiú. Réimsí riachtanacha atá marcáilte le *

*

*

  1. Freagrach as na sonraí: Miguel Ángel Gatón
  2. Cuspóir na sonraí: SPAM a rialú, bainistíocht trácht.
  3. Legitimation: Do thoiliú
  4. Na sonraí a chur in iúl: Ní chuirfear na sonraí in iúl do thríú páirtithe ach amháin trí oibleagáid dhlíthiúil.
  5. Stóráil sonraí: Bunachar sonraí arna óstáil ag Occentus Networks (EU)
  6. Cearta: Tráth ar bith is féidir leat do chuid faisnéise a theorannú, a aisghabháil agus a scriosadh.

  1.   Go leor87 a dúirt

    I kde is fearr liom kdevelop a úsáid (sílim gurb é sin an t-ainm atá air) chun na gui a chruthú ar a suaimhneas ach tá sé deacair agam fós na próisis a fháil chun go dtarlóidh sé x rud:

  2.   St0rmt4il a dúirt

    Go hiontach dóibh siúd againn a úsáideann Python: D!

    Beannachtaí!

  3.   Paul a dúirt

    Dia duit, tá mé ag leanúint an phobail seo le fada agus nílim an-chinnte an é seo an chéad uair a rinne mé trácht nó an ndearna mé cheana é roimh soy (nílim an-tugtha do thuairimí a scríobh ar an ngréasán i ndáiríre). Is é an rud ná go ndéanaim é chun moladh a fhágáil do Elav agus KZKG ^ Gaara mar riarthóirí, agus sílim gur smaoineamh maith a bheadh ​​ann breiseán a chur le dathú comhréir anois go bhfeicim le déanaí níos mó post le cód i dteangacha cláir éagsúla. Tá a fhios agam go bhfuil cúpla breiseán ann ach níor thriail mé ceann ar bith ós rud é nach úsáideoir wordpress mé, mar sin fágaim duit smaoineamh ar inmharthanacht na hiarrata. Tapaím an deis seo chun a gcuid smaointe a chur in iúl don chuid eile de na léitheoirí, mar tá a fhios agam go bhfuil daoine amuigh ansin ar fearr leo an cód a léamh gan aon mhaisiú. Gabhaim leithscéal má rinneadh trácht air seo cheana anseo agus gur diúltaíodh dó ar chúis éigin, mar ní cuimhin liom aon phlé ar an ábhar a fheiceáil.

    1.    marianogaudix a dúirt

      Is í an fhírinne ná gur mhaith liom an rogha a bheith agam an chomhréir a dhathú chun aird a tharraingt ar chód na dteangacha cláir.
      Chabhródh sé sin le húsáideoirí atá ag iarraidh teangacha cláir a fhoghlaim.

      Ach hug, táim compordach leis an bhfóram freisin agus gur féidir linn plé agus foghlaim le chéile.

      1.    am mionlach3000 a dúirt

        Tá GNU Emacs níos compordaí, ós rud é ar a laghad go gcaithfidh tú a roghnú cén seiceálaí teanga cláir ar mhaith leat a bheith ag obair (mura dteastaíonn níos mó meáchain uait do do phróiseálaí, bain úsáid as GNU Nano agus bain taitneamh as an íostachas ar a dhícheall).

        1.    marianogaudix a dúirt

          Elio táimid ag caint faoi Worpress. Curtha i bhfeidhm sa bhlag Ó Linux. Níl na feidhmeanna aige litreacha na bpost a dhathú.

          1.    am mionlach3000 a dúirt

            Ó tá brón orm.

        2.    pandev92 a dúirt

          Tá Naaa emacs compordach dóibh siúd a bhfuil 84 méar XD .., gnáthdhaoine, téacsleabhar, fo-théacs nó notepad ++ xd

          1.    am mionlach3000 a dúirt

            Is é an rud dochreidte ná nár fhoghlaim tú clóscríobh, a éilítear le go mbeidh tú in ann GNU Emacs agus a aicearraí méarchláir a láimhseáil go maith. Ina theannta sin, déanann a GUI éasca duit a bhiachláir a úsáid (is féidir é a úsáid i Windows, ach ní mholtar é a dhéanamh leis an ngnáthmhód ach le modh pras ordaithe ionas nach ndéanann win32 bhaghcat ar do script).

  4.   Carper a dúirt

    Ceacht teagaisc an-fhionnuar. Ach dála an scéil, ní thiomsaítear an cód foinse python, is teanga ateangaireachta í.

    1.    Giskard a dúirt

      Is féidir é a thiomsú de réir cód bréige. Ní teanga meaisín í ach bearta a léiríonn rud éigin don ateangaire, ach tugtar an próiseas le chéile freisin. Sa chiall seo, is féidir a rá go gcuirtear rud éigin le chéile.

  5.   hty a dúirt

    B’fhéidir go bhfuil sé níos fearr pytgk2 a fhoghlaim toisc gurb é 2.24 an leagan is déanaí atá ar fáil do Windows. Tá Sraith 3 feiceálach toisc nach bhfuil sí ann. Agus deir na droch-theangacha go bhriseann gnome na apis go léir i ngach leagan nua.

    1.    marianogaudix a dúirt

      Cláraíonn mé magadh le GTK 3.4 / 3.6 agus is í an fhírinne ná go mbrisfidh siad do chuid foighne agus do cheann, caithfidh tú an cód a athscríobh, anois tuigim cén fáth a ndéanann daoine Linux Mint gearán faoi GTK agus faoin tionscadal GNOME.
      Dóibh siúd de MINT, aontaím le GTK 2.4 níor tharla sé seo.

  6.   Carlos a dúirt

    Teagaisc mhaith agus tagairtí.
    Níl ann ach mionsonra, ó cuireadh an cód isteach, tá fleasca Python éigeantach agus ba cheart iad a urramú sa chód samplach.

    Beannachtaí!

    1.    marianogaudix a dúirt

      An féidir leat a mhíniú cad is éard atá sna haitheantas éigeantacha i Python? Deirim an fhírinne leat, níor chuala mé sin riamh. Tá droch-úsáid agam i bhfóraim PyGTK 2/3 i mBéarla agus b’fhéidir go ndéanaim dearmad air.

      1.    Giskard a dúirt

        I Python ní úsáideann tú eochracha mar atá i C nó bloic tosaigh / deiridh mar atá i Pascal, ach tuigtear gach rud tríd an bhfleasc a thugann tú don chód. Is é sin, aithnítear go bhfuil na bloic istigh. Is gné é a thaitníonn go mór liom. Seachnaíonn tú eochracha agus rudaí mar sin a scríobh.

        1.    pandev92 a dúirt

          Ní maith liom é sin, is cosúil go bhfuil sé níos simplí dhá eochracha beaga nó std :: endl; a chur ná a bheith le feiceáil má tá an líne xd táblaithe go maith

          1.    felipe a dúirt

            : p Cuirfidh do mhúinteoir cláir 0 ar do shon. Nó níos measa fós, cuirfidh siad tine as do phost. Is é an rud is tábhachtaí ná go bhfuil an cód inléite le gach a dtugann sé le tuiscint

          2.    pandev92 a dúirt

            ag críochnú le braces deiridh, déanann sé XD i bhfad níos inléite dom.

          3.    Giskard a dúirt

            Dáiríre???


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

            Feiceann tú? Ní thuigtear go han-mhaith é gan fleasca. Agus sin ceann éasca. Le ceann níos casta, ní thuigeann ach an tiomsaitheoir é. Is é an rud, ós rud é go gcaithfidh tú fleasc a dhéanamh ar aon nós (chun go dtuigfeadh daoine an cód) cén fáth go mbeadh ort a bheith iomarcach agus deighilteoirí a úsáid? Go leor le fleasc agus sin é.

          4.    pandev92 a dúirt

            Ar ndóigh, ní thuigtear aon rud, toisc nach bhfuil tú ag urramú rialacha dea-scríbhneoireachta cláir i c / c ++. Tá an rud a rinne tú bailí d’aon rud, cosúil le feidhm a neadú, laistigh d’fheidhm taobh istigh d’fheidhm eile atá taobh istigh d’fheidhm eile, ansin ba mhaith liom tú a fheiceáil xd má tá tú in ann é a thuiscint.

          5.    pandev92 a dúirt

            dála an scéil, le dhá fhéachaint, tá an cód sin intuigthe go héasca xD

          6.    Giskard a dúirt

            An rud a rinne mé chun na críche chun a thaispeáint duit go bhfuil sé thar a bheith deacair aon chód a thuiscint gan eangú, cé go dtiomsaíonn sé. Mar sin tá 2 riail agat: fleasc agus cuimsigh le teorantóirí. Ach tá sé sin iomarcach. I Python ní ghlacann an t-ateangaire leis an gcód sin. Agus níl ach riail amháin agat: fleasc. Éasca.
            Ach hug, gach duine lena gcuid cách.

          7.    Átheus a dúirt

            Tá an dá rud go maith, an fleasc agus an neamh-fhleasc, is é mo thuairim gur fearr liom an stíl leathcholún nó ruby, cosúil le python ach ní gá an eangú.

            Tuigtear níos fearr é seo: P:

            macalla 'int main (int argc, char * argv []) {program_name = argv [0]; cé go ((argc> 1) && (argv [1] [0] ==' - ')) {lasc (argv [ 1] [1]) {cás 'v': briathar = 1; briseadh; cás 'o': out_file = & argv [1] [2]; briseadh; cás 'l': line_max = atoi (& argv [1] [2]); briseadh; réamhshocrú: fprintf (stderr, »Droch-rogha% s \ n », argv [1]); úsáid ();} ++ argv; –argc;} más rud é (argc == 1) {do_file (" print.in ");} eile {while (argc> 1) { do_file (argv [1]); ++ argv; –argc;}} tuairisceán (0);} '| perl -p -e 's / \ {/ \ {\ n \ t / g; s / \; / \; \ n \ t / g; s / \ t \} / \} / g;'

            Beannachtaí 😀

      2.    Giskard a dúirt

        Sílim go gciallaíonn Carlos nach bhfuil aon fhleasc ann nuair a thagann an cód amach. Ní oibreoidh sé sin le cóip & greamaigh. Níl a fhios agam an bhfuil an chlib ann agus post á chruthú chun cód teanga a iontráil. Bheadh ​​sé go maith dá gcuirfidís é mura bhfuil sé ann.

        1.    Giskard a dúirt

          Chonaic mé cheana cad í an fhadhb: déanann an Clib CÓD gach spás agus cluaisín a bhaint (níor cheart go ndéanfadh sé sin !!!) Ach má chuireann tú nbsp air ansin tá cuma mhaith ar an gcód. A0 i heacs (160 in Nollaig) cé go gceapaim go bhféadfadh sé a bheith ag brath ar an gcló (níl a fhios agam). Má úsáidtear é tagann sé amach mar seo:

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

          Tá cuma mhaith air i mo thástálacha, ach níl réamhamharc agam nuair a phostálann mé freagraí (agus ba chóir go mbeadh sin !!!) Mura dtagann sé amach, ní mise atá an locht.

          1.    marianogaudix a dúirt

            Féach ar na samplaí a thugann Sebastian Pölsterl ina rang teagaisc PyGTK 3, ní chuireann Sebastian lipéid air.

            Sampla :

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

            is féidir leat gach ceann de ranganna teagaisc Sebastian a fheiceáil.

          2.    Giskard a dúirt

            Níl a fhios agam cad atá i gceist agat. Is é an rud atá á rá agam nach féidir anseo, sna poist, an Clib HTML «CÓD» a úsáid ionas go mbeidh an méid a chuireann tú mar chód agus go dtagann sé amach go maith laistigh de. Ar an leathanach a ndéanann tú tagairt, má fhéachann tú ar fhoinsí na leathanach, feicfidh tú nach n-úsáideann sé CÓD ach go n-úsáideann sé teimpléid HTML eile.
            Níl sé in aghaidh an chóid a chuir tú isteach ach locht a chur in iúl i gcóras postála an láithreáin seo. Cé acu, b’fhéidir, is féidir le admins a shocrú.
            Nuair a labhraím faoi chlibeanna is léir go bhfuilim ag caint faoi HTML, ní faoi Python. Ar aon chuma, má chuireann tú cód gan eangú i Python ní oibreoidh sé. Má thagann newbie agus cóipeáil an cód mar atá sé sa phost seo agus iarracht a dhéanamh é a rith, teipfidh air. B’fhéidir go mbeidh frustrachas ort mar is newbie tú. Arís, ní tusa an locht; agus i mo fhreagra láithreach roimhe seo is é a rinne mé ná bealach a thabhairt chun an fhadhb a réiteach ón leibhéal úsáideora-cé-post.

          3.    marianogaudix a dúirt

            Tá tú ceart go leor, ba chóir go mbeadh grianghraif uaslódáilte agam seachas an cód a chóipeáil.
            a thaispeáint conas a ordaítear ráitis i gceart i PyGTK 3.

  7.   felipe a dúirt

    Chun clár a dhéanamh le python molaim Eclipse a úsáid leis an mbreiseán PyDev, nó Pychar m

  8.   louis a dúirt

    Mar a dúradh thuas, sin é an fáth go díreach nach maith liom python, mar gheall ar cheist an eangú. Mar a chonaiceamar, ní oibreoidh cóipeáil agus greamaigh a dhéanamh, rud nach dtarlaíonn le teangacha eile mar C, Java, PHP, srl.

    An rud inléiteachta, cuirimid áilleacht cód i bhfeidhm (cosúil le http://indentcode.net/ ) agus réidh,

    Tá an ghránna socraithe, ach mura bhfuil eangú ann agus má athraítear an loighic, fuaimeann muid.

  9.   Carlos a dúirt

    Is nua liom PyGTK, an féidir idirghníomhú le scripteanna sliogáin sa teanga seo?

    1.    Dia duit a dúirt

      Go raibh maith agat as an rang teagaisc.

      Beannachtaí.