Napravit ćemo mali program s PyGTK 3.0 koji također radi za PyGTK 3.4. Ovaj mali GUI naučit će vas kako podijeliti program na dvije ili više datoteka.
Možete posjetiti tutorial Sebastiana Pölsterla o novom PyGTK 3, evo novog vodiča, ostavljam vezu:
http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html
Ovo je Sebastianov blog.
Kritika ovog vodiča od strane Sebastiana je ta što on ne podučava kako podijeliti program na dijelove ili na nekoliko datoteka, bilo bi dobro da je pokazao primjer kako se to radi s PyGTK 3.
Svi veliki i složeni programi podijeljeni su u mnogo datoteka, a datoteke se čak smještaju u druge direktorije, odnosno nalaze se u različitim mapama.
Počnimo sa malim primjerom:
Ovdje je kod za pisanje u jednoj datoteci koja se zove gui.py. Otvaramo Gedit uređivač teksta ili uređivač koji najčešće koristimo, kopiramo donji kod i spremamo ga kao gui.py
iz gi.repository import Gtk class gui (): def on_open_clicked (self, button): print "\" Open "kliknuto je dugme" def on_close_clicked (self, button): print "Closing application" 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. button = Gtk.Button (label = 'Open') self.button.connect ("kliknuo", self.on_open_clicked) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button ( label = 'Close') self.button.connect ("kliknuo", self.on_close_clicked) self.box.pack_start (self.button, True, True, 0) self.window.show_all () Gtk.main () if __name__ == '__glavna__': gui = gui ()
def on_open_clicked (self, button): ispis "\" Otvoreno \ "kliknuto je dugme"
To je funkcija koja se aktivira u terminalu kada pritisnemo dugme za otvaranje. Signal za njegovo aktiviranje je:
self.button.connect ("kliknuo", self.on_open_clicked) def on_close_clicked (self, button): ispis "Zatvaranje aplikacije" Gtk.main_quit ()
To je funkcija koja se aktivira kada kliknemo na gumb za zatvaranje.
zatvorite program koji pokrećemo.
signal za njegovo aktiviranje je
self.button.connect ("kliknuo", self.on_close_clicked) iz gi.repository import Gtk ### pozivamo PyGTK biblioteke ### class gui (): ### definicija klase zvana gui je glavna klasa # ##
Izjava o widgetima: widgets je program koji unaprijed određuju GUI biblioteke koje koristimo. Na primjer, widget je dugme, prozor, okvir itd. To su dodaci koje deklariramo u našem programu.
self.window = Gtk.Window () ### window ### self.box = Gtk.Box () ### box #### self.button = Gtk.Button (label = 'Open') ### # dugme za otvaranje #### self.button = Gtk.Button (label = 'Close') #### button close #### self.window.add (self.box) #### okvir se nalazi u prozor nazvan window #### self.box.pack_start (self.button, True, True, 0) ##### dugme se nalazi u polju nazvanom box ### self.window.show_all () ## # prikazujemo cijeli prozor ### gui = gui () ### kreiramo gui objekt ####
Naš program smještamo u mapu koja se u našem slučaju zove jednostavna na radnoj površini
Otvaramo mapu s terminalom, u mom slučaju koristim Nemo iz Linux Mint 14.
Za kompajliranje stavljamo u terminal python gui.py
pogledajte sliku.
Sada možemo vidjeti naš mali program ili novi dodatak stvoren pomoću PyGTK 3 biblioteka
To je jednostavan prozor s dva gumba.
Sada program dijelimo na tri dijela, a ja ostavljam kod za tri datoteke.
Prva gui.py datoteka
iz gi.repository import Gtk from delete import uništi iz io import io klasa gui (uništi, 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 ("kliknuo", self.on_open_clicked ) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button (label = 'Close') self.button.connect ("kliknuo", self.on_close_clicked) self.box.pack_start (self.button, True, True, 0) self.window.show_all () Gtk.main () ako je __name__ == '__main__': gui = gui ()
Druga datoteka io.py
klasa io: def on_open_clicked (self, button): print "\" kliknuto je dugme ""
Treća datoteka Униšte.py
iz gi.repository uvoza Gtk klase uništi: def on_close_clicked (self, button): ispiši "Zatvaranje aplikacije" Gtk.main_quit ()
Tri datoteke smještamo u istu mapu, u našem slučaju mapa se naziva jednostavno podijeljena.
Za kompajliranje tri datoteke. Otvorimo mapu s terminalom i jednostavno je vratimo u terminal
python gui.py
Izmjene izvršene na gui.py kodu
from uništi uvoz uništi ### izraz za uvoz naše datoteke kill.py ### iz io import io ### izraz za uvoz naše datoteke io.py ### klasa gui (uništi, io): #### u klasu main dodamo podklase uništiti i io ####
Vidite da je rečenica
def on_open_clicked (self, button): ispis "\" Otvoreno \ "kliknuto je dugme"
Nije u gui.py, nego u datoteci io.py
Rečenica
def on_close_clicked (self, gumb):
print "Zatvaranje aplikacije"
Gtk.main_quit ()
nalazi se u datoteci Униšte.py
Tako program možemo istovremeno podijeliti na više datoteka smještenih u različitim direktorijima.
S druge strane, Python je stub slobodnog softvera i prilagođen je za rad sa GTK 3.6 /3.8, njegovo ime je PyGTK. Pythonova adaptacija za KDE naziva se PyQT.
Python je prilagođen za Mac OS i WINDOWS.
Nadam se da vam je ovaj mini vodič za PyGTK3 bio od pomoći. Oni mogu iznijeti sve konstruktivne kritike koje žele.
Takođe znam neke Gtk 3.4 /3.6 i Vala GTK 3.4 / 3.6.
http://www.youtube.com/watch?v=9ckRn_sx8CE
Na kraju, korisnici KDE-a se izvinjavaju što nisu uradili mini uputstvo za KDE.
U kdeu više volim koristiti kdevelop (mislim da se to tako zove) za kreiranje GUI-a, ali još uvijek teško pronalazim procese da se to dogodi x stvar: '(
Izvrsno za nas koji koristimo Python: D!
Pozdrav!
Pozdrav, pratim ovu zajednicu već dugo i nisam baš siguran jesam li ovo prvi put da sam komentirao ili sam to već učinio prije 😀 (nisam baš prepun pisanju komentara na webu). Stvar je u tome što to radim kako bih Elavu i KZKG ^ Gaari prepustio prijedlog kao administratorima i mislim da bi bilo dobro dodati dodatak za bojanje sintakse sada kada u posljednje vrijeme vidim više postova s kodom na različitim programskim jezicima. Znam da postoji dosta dodataka, ali nisam probao nijedan, jer nisam korisnik wordpressa, pa vas ostavljam da razmislite o održivosti zahtjeva. Koristim priliku da ostatak čitatelja pitam što misle o toj ideji, jer znam da postoje ljudi koji vole čitati kôd bez ikakvih ukrasa. Izvinjavam se ako je ovo već ovdje komentirano i iz nekog razloga je odbijeno, jer se ne sjećam da sam vidio bilo kakvu raspravu na tu temu.
Istina je da bih želio imati mogućnost bojenja sintakse kako bih istaknuo kod programskih jezika.
To bi pomoglo korisnicima koji žele naučiti programske jezike.
Ali hej, ugodno mi je i forum i možemo razgovarati i učiti zajedno.
GNU Emacs je ugodniji, jer barem morate odabrati na kojem programu za provjeru programskog jezika želite raditi (ako ne želite veću težinu svog procesora, upotrijebite GNU Nano i uživajte u minimalizmu u najboljem slučaju).
Elio estamos hablando de Worpress . Implementado en el blog Desde Linux. No tiene las funciones para dar color a las letras de los posteos .
Oh žao mi je.
Naaa emacs je udoban za one koji imaju 84 prsta XD .., normalne ljude, textmate, sublimetext ili notepad ++ xd
Nevjerovatna stvar nije naučeno tipkanje, što je potrebno da bi se mogao dobro nositi s GNU Emacs-om i njegovim prečicama na tastaturi. Uz to, njegov GUI olakšava vam upotrebu njegovih izbornika (može se koristiti u sustavu Windows, ali nije preporučljivo to raditi u normalnom načinu, već u načinu naredbenog retka, tako da win32 ne bojkotira vašu skriptu).
Vrlo super tutorial. Ali usput, izvorni kod pythona nije kompajliran, on je protumačeni jezik.
Može se kompajlirati u pseudo kod. Nije stroj jezik već bajtovi koji interpretatoru predstavljaju nešto, ali se proces naziva i kompiliranim. U tom smislu, moguće je reći da je nešto sastavljeno.
Možda je bolje naučiti pytgk2 jer je najnovija verzija dostupna za Windows 2.24. Serija 3 uočljiva je svojim odsustvom. A loši jezici kažu da gnom razbija sve apise u svakoj novoj verziji.
Programiram maketu s GTK 3.4 / 3.6 i istina je da vam slome strpljenje i glavu, morate prepisati kod, sada razumijem zašto se ljudi Linux Mint-a žale na GTK i GNOME projekt.
Onima iz MINT-a slažem se s GTK 2.4 to se nije dogodilo.
Dobar vodič i reference.
Samo detalj, otkako je stavljen kôd, u Pythonu su uvlačenja obavezna i treba ih poštovati u primjeru koda.
Pozdrav!
Možete li objasniti od čega se sastoje obavezne identifikacije u Pythonu? Zaista vam kažem, nikad to nisam čuo, loše sam navikao na PyGTK 2/3 forume na engleskom i možda to previdim.
U Pythonu ne koristite tipke kao u C niti blokove početak / kraj kao u Pascalu, ali sve se razumije kroz uvlačenje koje dajete kodu. Odnosno, blokovi se prepoznaju kao uvučeni. To je osobina koju posebno volim. Izbjegavate pisanje ključeva i sličnih stvari.
Jednostavno mi se to ne sviđa, čini se jednostavnijim staviti dvije male tipke ili std :: endl;, nego ako se vidi je li xd linija dobro tabelirana
: p Vaš učitelj programiranja će vam postaviti 0. Ili još gore, otpustiće vas s posla. Najvažnije je da je kôd čitljiv sa svim onim što podrazumijeva
završavajući zatvaranjem zagrada, čini me mnogo čitljivijim XD ..
Ozbiljno ???
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);}
Vidiš? Bez udubljenja to se ne razumije dobro. A to je lako. Sa složenijim, razumije ga samo kompajler. Stvar je u tome što, budući da MORATE svejedno uvući crtu (da bi ljudi razumjeli kôd), zašto biste morali biti suvišni i koristiti separatore? Dosta s udubljenjem i to je to.
Naravno, ništa se ne razumije, jer ne poštujete pravila dobrog pisanja programa na c / c ++. Ono što ste učinili vrijedi za bilo što, poput gniježđenja funkcije, unutar funkcije unutar druge funkcije koja je unutar druge, tada želim da vas vidim xd ako to možete razumjeti.
usput, s dva izgleda, taj je kod lako razumljiv xD
Ono što sam učinio namjerno sam vam pokazao da je bez uvlačenja, iako se kompajlira, izuzetno teško razumjeti bilo koji kod. Dakle, imate 2 pravila: uvući i obuhvatiti graničnicima. Ali to je suvišno. U Pythonu tumač jednostavno ne prihvaća takav kod. I imate samo jedno pravilo: uvlačenje. Lako.
Ali hej, svi sa svojim ukusom.
I jedno i drugo je dobro, uvučeno i ne uvučeno, po mom mišljenju više volim stil sa zarezom ili rubinom, slično pythonu, ali uvlačenje nije potrebno.
Ovo se bolje razumije: P:
echo 'int main (int argc, char * argv []) {ime_programa = argv [0]; while ((argc> 1) && (argv [1] [0] ==' - ')) {prekidač (argv [ 1] [1]) {slučaj 'v': opširno = 1; break; case 'o': out_file = & argv [1] [2]; break; case 'l': line_max = atoi (& argv [1] [2]); break; zadano: fprintf (stderr, »Loša opcija % s \ n », argv [1]); upotreba ();} ++ 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;'
Pozdrav 😀
Mislim da Carlos znači da tamo gdje kôd izađe nema uvlaka. To s copy & paste jednostavno neće uspjeti. Ne znam postoji li oznaka prilikom kreiranja posta
za unos koda jezika. Bilo bi dobro da ga stave ako ne postoji.
Već sam vidio u čemu je problem: Oznaka CODE uklanja sve razmake i kartice (to ne bi smjela činiti !!!) Ali ako na nju stavite nbsp, onda kod izgleda dobro. A0 u hex (160 dec) iako mislim da to može ovisiti o fontu (ne znam). Ako se koristi, onda izlazi ovako:
def fib(n):
a, b = 0, 1
while a < n:
print(a)
a, b = b, a+b
Da u mojim testovima izgleda dobro, ali nemam pregled prilikom objavljivanja odgovora (a to bi trebalo biti !!!) Ako ne izađe, nisam ja kriv 😉
Pogledajte primjere koje Sebastian Pölsterl daje u svom tutorijalu za PyGTK 3, Sebastian ne postavlja etikete.
Primjer:
http://python-gtk-3-tutorial.readthedocs.org/en/latest/entry.html#example
možete vidjeti sve Sebastianove upute.
Ja ne znam šta misliš. Ono što kažem je da ovdje, u postovima, nije moguće koristiti HTML oznaku "CODE" tako da ono što stavite kao kôd bude dobro uvučeno. Ako vidite izvore stranice, na stranici koju upućujete vidjet ćete da ne koristi CODE, već koristi druge HTML graničnike.
Nije protiv koda koji ste unijeli, već ukazuje na manu u sistemu objavljivanja ove stranice. Što, možda, administratori mogu popraviti.
Kada govorim o oznakama, očito govorim o HTML-u, a ne o Pythonu. U svakom slučaju, ako u Python stavite kôd bez uvlačenja, to jednostavno neće raditi. Ako dođe novak i kopira kôd kakav se pojavljuje u ovom postu i pokuša ga pokrenuti, neće uspjeti. Možda ste frustrirani jer ste novajlija. Opet, krivica nije vaša; i u mom neposrednom prethodnom odgovoru ono što sam uradio bio je način da se problem riješi s nivoa korisnik-ko-objavljuje.
Potpuno ste u pravu, trebao sam otpremiti fotografije umjesto da kopiram kod.
da pokaže kako su iskazi pravilno poredani u PyGTK 3.
Za programiranje s pythonom preporučujem upotrebu Eclipse-a s dodatkom PyDev ili Pychar m
Kao što je gore komentirano, upravo zato ne volim python, zbog problema sa uvlačenjem. Kao što smo vidjeli, kopiranje i lijepljenje neće raditi, što se ne događa s drugim jezicima kao što su C, Java, PHP itd.
Stvar čitljivosti, mi primjenjujemo uljepšavanje koda (poput http://indentcode.net/ ) i spreman,
Ružno je popravljeno, ali ako nema uvlačenja i logika je promijenjena, zvučimo ..
Ja sam novi u PyGTK-u, je li moguće komunicirati sa skriptama ljuske na ovom jeziku?
Hvala na lekciji.
Pozdrav.