Ons gaan 'n klein program met PyGTK 3.0 maak wat ook vir PyGTK 3.4 werk. Hierdie klein GUI leer u hoe u 'n program in twee of meer lêers kan verdeel.
U kan Sebastian Pölsterl se tutoriaal oor die nuwe PyGTK 3 besoek, hier is die nuwe tutoriaal, ek laat die skakel:
http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html
Dit is Sebastian se blog.
'N Kritiek op hierdie tutoriaal deur Sebastian is dat dit nie leer hoe om 'n program in dele of in verskeie lêers te verdeel nie, dit sou goed gewees het as hy 'n voorbeeld van hoe om dit met PyGTK 3 te doen, sou toon.
Alle groot en ingewikkelde programme is in baie lêers verdeel en die lêers word selfs in ander gidse geplaas, dit wil sê in verskillende vouers.
Kom ons begin met die klein voorbeeld:
Hier is die skryfkode in 'n enkele lêer genaamd gui.py. Ons open die Gedit-teksredakteur of die redakteur wat ons die meeste gebruik, ons kopieer die onderstaande kode en stoor dit as gui.py
van gi.repository import Gtk klas gui (): def on_open_clicked (self, button): druk op "\" Open \ "knoppie is geklik" def on_close_clicked (self, button): print "Sluiting aansoek" 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. knoppie = Gtk.Button (label = 'Open') self.button.connect ("geklik", self.on_open_clicked) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button ( label = 'Sluit') self.button.connect ("geklik", self.on_close_clicked) self.box.pack_start (self.button, True, True, 0) self.window.show_all () Gtk.main () as __name__ == '__hoof__': gui = gui ()
def on_open_clicked (self, button): druk op die \ "Open \" knoppie is geklik "
Dit is 'n funksie wat in die terminale geaktiveer word as ons op die oopknoppie klik. Die sein om dit te aktiveer is:
self.button.connect ("geklik", self.op_open_geklik) def on_close_clicked (self, button): druk "Toepassing sluit" Gtk.main_quit ()
Dit is 'n funksie wat geaktiveer word as ons op die sluitknoppie klik.
sluit die program wat ons uitvoer.
die sein om dit te aktiveer is
self.button.connect ("geklik", self.on_close_clicked) vanaf gi.repository import Gtk ### ons roep PyGTK-biblioteke op ### class gui (): ### class definition genoem gui is die hoofklas ##
Widgets verklaring: 'n widgets is 'n program wat vooraf bepaal word deur die grafiese koppelvlakbiblioteke wat ons gebruik. Byvoorbeeld, 'n widget is 'n knoppie, 'n venster, 'n blokkie, ens. Dit is die widgets wat ons in ons program verklaar.
self.window = Gtk.Window () ### venster ### self.box = Gtk.Box () ### box #### self.button = Gtk.Button (label = 'Open') ### # oop knoppie #### self.button = Gtk.Button (label = 'Sluit') #### sluit knoppie #### self.window.add (self.box) #### die vak is vervat in die venster genaamd venster #### self.box.pack_start (self.button, True, True, 0) ##### die knoppie is vervat in die kassie genaamd box ### self.window.show_all () ## # ons wys die hele venster ### gui = gui () ### skep 'n gui-voorwerp ####
Ons plaas ons program in 'n map wat in ons geval eenvoudig genoem word op die lessenaar
Ons open die map met die terminale, in my geval gebruik ek Nemo van Linux Mint 14.
Om saam te stel, plaas ons die terminale python gui.py
sien die prentjie.
Nou kan ons ons klein program of nuwe widget sien wat met die PyGTK 3-biblioteke geskep is
Dit is 'n eenvoudige venster met twee knoppies.
Nou verdeel ons die program in drie dele, dan los ek die kode vir die drie lêers.
Eerste gui.py-lêer
van gi.repositiewe invoer Gtk van vernietig invoer vernietig van io invoer io klas gui (vernietig, 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 ("geklik", self.on_open_clicked) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button (label = 'Close') self.button.connect ('geklik', self.on_close_clicked) self.box.pack_start ( self.button, True, True, 0) self.window.show_all () Gtk.main () if __name__ == '__main__': gui = gui ()
Tweede io.py-lêer
klas io: def on_open_clicked (self, knoppie): druk "\" Open \ "knoppie is geklik"
Derde lêer destroy.py
van gi.repository invoer Gtk-klas vernietig: def on_close_clicked (self, knoppie): druk "Toepassing sluit" Gtk.main_quit ()
Ons plaas die drie lêers in dieselfde vouer in ons geval, die vakkie word eenvoudig verdeel genoem.
Om die drie lêers saam te stel. Ons open die map met die terminale en plaas dit eenvoudig weer in die terminale
python gui.py
Wysigings aan die gui.py-kode aangebring
van vernietig invoer vernietig ### verklaring om ons lêer in te voer vernietig.py ### van io invoer io ### verklaring om ons lêer in te voer io.py ### klas gui (vernietig, io): #### na klas hoof voeg ons die subklasse by vernietig en io ####
U kan sien dat die sin
def on_open_clicked (self, button): druk op die \ "Open \" knoppie is geklik "
Dit is nie in gui.py nie, maar wel in die io.py-lêer
Vonnis
def on_close_clicked (self, knoppie):
druk "Sluitingsaansoek"
Gtk.main_quit ()
dit is in die destroy.py-lêer geleë
Sodoende kan ons 'n program in baie lêers op dieselfde tyd verdeel.
Aan die ander kant is Python 'n pilaar van gratis sagteware, en dit is aangepas om met GTK 3.6 /3.8 te werk, sy naam is PyGTK. Python se verwerking vir KDE word PyQT genoem.
Python is aangepas vir Mac OS en Windows.
Ek hoop dat hierdie mini-handleiding van PyGTK3 vir u nuttig was. Hulle kan al die opbouende kritiek lewer wat hulle wil hê.
Ek ken ook 'n paar Gtk 3.4 /3.6 en Vala GTK 3.4 / 3.6.
http://www.youtube.com/watch?v=9ckRn_sx8CE
Laastens vra KDE-gebruikers om verskoning dat hulle nie 'n mini-tutoriaal vir KDE gedoen het nie.
33 kommentaar, los joune
In kde gebruik ek verkieslik kdevelop (ek dink dit is wat dit genoem word) om die gui op my gemak te skep, maar ek vind steeds die prosesse om dit te laat gebeur x ding: '(
Ideaal vir diegene onder ons wat Python gebruik: D!
Groete!
Hallo, ek het hierdie gemeenskap al lank gevolg en ek is nie baie seker of dit die eerste keer is dat ek kommentaar lewer nie, of dat ek dit al voorheen gedoen het 😀 (ek is nie baie gegewe om regtig kommentaar op die web te skryf nie). Die saak is dat ek dit doen om 'n voorstel aan Elav en KZKG ^ Gaara as administrateurs te verlaat, en ek dink dit sal 'n goeie idee wees om 'n inprop toe te voeg vir sintaksiskleursel, aangesien ek onlangs meer plasings met kode in verskillende programmeertale sien. Ek weet dat daar 'n hele paar invoegtoepassings is, maar ek het nog nie probeer nie, aangesien ek nie 'n WordPress-gebruiker is nie, en ek laat u dus nadink oor die lewensvatbaarheid van die versoek. Ek gebruik die geleentheid om die res van die lesers te vra wat hulle van die idee dink, want ek weet dat daar mense is wat verkies om die kode te lees sonder enige versiering. Ek vra om verskoning as hieroor al kommentaar gelewer is en om die een of ander rede verwerp is, aangesien ek nie onthou dat ek enige bespreking daaroor gesien het nie.
Die waarheid is dat ek die opsie wil hê om die sintaksis te kleur om die kode van die programmeertale uit te lig.
Dit sal gebruikers help wat programmeertale wil leer.
Maar hey, ek is ook gemaklik met die forum en dat ons saam kan bespreek en leer.
GNU Emacs is gemakliker, want ten minste moet u kies in watter programmeertoetser u wil werk (as u nie meer gewig vir u verwerker wil hê nie, gebruik dan GNU Nano en geniet op sy beste minimalisme).
Elio ons praat oor Worpress. Geïmplementeer in die blog Van Linux. Dit het nie die funksies om die letters van die boodskappe in te kleur nie.
O, ek is jammer.
Naaa emacs is gemaklik vir diegene met 84 vingers XD .., normale mense, sms, sublimeteks of notepad ++ xd
Die onwaarskynlike ding is dat u nie tik aangeleer het nie, wat nodig is om GNU Emacs en die sleutelbordkortpaaie goed te kan hanteer. Daarbenewens maak die GUI dit maklik vir u om die menu's te gebruik (dit kan in Windows gebruik word, maar dit word nie aanbeveel om dit in die normale modus te doen nie, maar met die command prompt-modus, sodat win32 nie u script boikot nie).
Baie cool tutoriaal. Maar terloops, die luislangkode is nie saamgestel nie, dit is 'n geïnterpreteerde taal.
Dit kan saamgestel word na 'n pseudokode. Dit is nie masjientaal nie, maar bytes wat vir die tolk iets voorstel, maar die proses word ook saamgestel genoem. In hierdie sin is dit moontlik om te sê dat iets saamgestel is.
Miskien is dit beter om pytgk2 te leer, want die nuutste weergawe beskikbaar vir Windows is 2.24. Reeks 3 is opvallend deur die afwesigheid daarvan. En die slegte tonge sê dat kabouter al die api's in elke nuwe weergawe breek.
Ek programmeer 'n mockup met GTK 3.4 / 3.6 en die waarheid is dat hulle u geduld en u kop breek, u moet die kode herskryf, nou verstaan ek waarom die Linux Mint-mense kla oor GTK en die GNOME-projek.
Vir diegene van MINT stem ek saam met GTK 2.4, dit het nie gebeur nie.
Goeie handleiding en verwysings.
Slegs 'n detail, aangesien kode ingevoeg is, is in Python-inkepings verpligtend en moet dit in die voorbeeldkode gerespekteer word.
Groete!
Kan u verduidelik waaruit die verpligte identifikasies in Python bestaan? Ek sê vir u die waarheid, ek het dit nog nooit gehoor nie. Ek is sleg gewoond aan die PyGTK 2/3 forums in Engels en miskien sien ek dit oor die hoof.
In Python gebruik u nie sleutels soos in C of begin- / eindblokke soos in Pascal nie, maar alles word verstaan deur die inspringing wat u die kode gee. Dit wil sê, die blokke word erken as ingekeep. Dit is 'n kenmerk wat ek veral liefhet. U vermy die skryf van sleutels en sulke dinge.
Ek hou net nie daarvan nie, dit lyk eenvoudiger om twee klein sleutels of 'n std :: endl; te plaas as om gesien te word as die xd-lyn goed getabuleer is
: p U programmeringsonderwyser sit 'n 0 vir u. Of erger nog, hulle sal u uit u werk ontslaan. Die belangrikste is dat die kode leesbaar is met alles wat dit impliseer
eindig met die sluiting van draadjies, dit maak my baie leesbaarder XD ..
Ernstig ???
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);}
Jy sien? Sonder inkepings word dit nie baie goed verstaan nie. En dit is maklik. Met 'n meer komplekse een, verstaan net die samesteller dit. Die saak is, aangesien u in elk geval MOET inspring (vir mense om die kode te verstaan), waarom sou dit oorbodig wees en skeiers gebruik? Genoeg met inspringing en dit is dit.
Daar word natuurlik niks verstaan nie, want u respekteer nie die reëls vir goeie skryfwerk vir 'n program in c / c ++ nie. Wat u gedoen het, is geldig vir enigiets, soos om 'n funksie te nestel, binne 'n funksie in 'n ander funksie wat in 'n ander funksie is, dan wil ek u xd sien as u dit kan verstaan.
terloops, met twee voorkoms, is die kode maklik verstaanbaar xD
Wat ek gedoen het, het ek doelbewus gedoen om aan te toon dat dit, sonder dat dit inmekaargesit word, baie moeilik is om enige kode te verstaan. U het dus twee reëls: inspringing en omvat met afbakeninge. Maar dit is oorbodig. In Python word die kode eenvoudig nie deur die tolk aanvaar nie. En u het net een reël: inkeping. Maklik.
Maar hey, almal met hul smaak.
Albei is goed, die ingekeep en die nie-ingekeep, volgens my verkies ek die puntkomma-styl of robyn, soortgelyk aan luislang, maar die inspringing is nie nodig nie.
Dit is hoe dit beter verstaan word: P:
eggo 'int main (int argc, char * argv []) {program_name = argv [0]; while ((argc> 1) && (argv [1] [0] ==' - ')) {switch (argv [ 1] [1]) {case 'v': verbose = 1; breek; geval 'o': out_file = & argv [1] [2]; breek; geval 'l': line_max = atoi (& argv [1] [2]); breek; standaard: fprintf (stderr, »Slegte opsie% s \ n », argv [1]); gebruik ();} ++ argv; –argc;} as (argc == 1) {do_file (" print.in ");} anders {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;'
Groete 😀
Ek dink Carlos bedoel dat daar geen inspringings is waar die kode verskyn nie. Dit met copy & paste sal net nie werk nie. Ek weet nie of die etiket bestaan as u 'n boodskap skep nie
om taalkode in te voer. Dit sal goed wees as hulle dit stel as dit nie bestaan nie.
Ek het al gesien wat die probleem is: die CODE-tag verwyder alle spasies en oortjies (dit moet dit nie doen nie !!!) Maar as u 'n nbsp daarop sit, lyk die kode goed. A0 in hex (160 in des), alhoewel ek dink dit kan van die lettertipe afhang (ek weet nie). As dit gebruik word, kom dit soos volg uit:
def fib(n):
a, b = 0, 1
while a < n:
print(a)
a, b = b, a+b
Dit lyk in my toetse goed, maar ek het nie 'n voorskou as ek antwoorde plaas nie (en dit moet wees !!!) As dit nie uitkom nie, is dit nie my skuld nie
Kyk na die voorbeelde wat Sebastian Pölsterl in sy PyGTK 3-handleiding gee, Sebastian plaas geen etikette nie.
Voorbeeld:
http://python-gtk-3-tutorial.readthedocs.org/en/latest/entry.html#example
u kan al die tutoriaal van Sebastian sien.
Ek weet nie wat jy bedoel. Wat ek sê, is dat dit hier, in die berigte, nie moontlik is om die HTML-tag «CODE» te gebruik sodat dit wat u as kode sit, en dit goed ingedruk word nie. As u die bladsybronne op die verwysde bladsy sien, sal u sien dat dit nie CODE gebruik nie, maar ander HTML-afbakeners gebruik.
Dit is nie teen die kode wat u ingevoer het nie, maar wys eerder op 'n fout in die plasingstelsel van hierdie webwerf. Wat administrateurs miskien kan regstel.
As ek oor tags praat, praat ek natuurlik van HTML, nie van Python nie. In elk geval, as u kode sonder inkeping in Python plaas, sal dit net nie werk nie. As 'n beginner die kode kopieer soos dit in hierdie boodskap verskyn en probeer om dit uit te voer, sal hy misluk. U mag gefrustreerd wees omdat u 'n beginner is. Weereens, die fout is nie joune nie; en in my onmiddellike vorige antwoord het ek 'n manier gegee om die probleem op te los vanaf die gebruiker-wie-pos-vlak.
U het heeltemal reg, ek moes foto's gelaai het in plaas van die kode te kopieer.
om aan te toon hoe stellings in PyGTK 3 behoorlik georden is.
Om met python te programmeer, beveel ek aan om Eclipse saam met die PyDev-inprop, of Pychar m, te gebruik
Soos hierbo genoem, daarom hou ek nie van luislang nie, as gevolg van inkepings. Soos ons gesien het, sal kopieer en plak nie werk nie, wat nie met ander tale soos C, Java, PHP, ens. Gebeur nie.
Die leesbaarheid, ons pas 'n kodeversierder toe (soos http://indentcode.net/ ) en gereed,
Die lelike is reg, maar as daar geen inkeping is nie en die logika verander, klink ons ..
Ek is nuut by PyGTK. Is dit moontlik om met skulpskrifte in hierdie taal te kommunikeer?
Dankie vir die tutoriaal.
Groete.