Készítünk egy kis programot a PyGTK 3.0-val a PyGTK 3.4-hez is. Ez a kis grafikus felhasználói felület megtanítja, hogyan kell felosztani a programot két vagy több fájlra.
Meglátogathatja Sebastian Pölsterl oktatóanyagát az új PyGTK 3-ról, itt van az új oktatóanyag, otthagyom a linket:
http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html
Ez Sebastian blogja.
Sebastian ezt a bemutatót kritizálja, hogy az nem tanítja meg, hogyan kell egy programot részekre vagy több fájlra osztani, jó lett volna, ha példát mutat be arra, hogyan kell a PyGTK 3-mal csinálni.
Minden nagy és összetett program sok fájlra van felosztva, és a fájlokat még más könyvtárakba is beillesztik, vagyis különböző mappákban helyezkednek el.
Kezdjük a kis példával:
Itt található az írókód egyetlen fájlban, a gui.py néven. Megnyitjuk a Gedit szövegszerkesztőt vagy az általunk leggyakrabban használt szerkesztőt, átmásoljuk az alábbi kódot, és elmentjük gui.py néven
from gi.repository import Gtk class gui (): def on_open_clicked (self, button): print "\" Open \ "button was clicked" def on_close_clicked (self, button): print "Bezáró alkalmazás" print Gtk.main_quit () def __init__ (én): 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 = 'Bezárás') 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 ()
def on_open_clicked (self, button): print "\" Open \ "gombra kattintottak"
Ez egy olyan funkció, amely akkor aktiválódik a terminálban, amikor a megnyitás gombra kattintunk. A jel az aktiválásához:
self.button.connect ("clicked", self.on_open_clicked) def on_close_clicked (self, button): print "Bezáró alkalmazás" Gtk.main_quit ()
Ez egy olyan funkció, amely akkor aktiválódik, amikor a bezárás gombra kattintunk.
zárja be a futtatott programot.
a jel az aktiválásához
self.button.connect ("clicked", self.on_close_clicked) from gi.repository import Gtk ### meghívjuk a PyGTK könyvtárakat ### class gui (): ### gui nevű osztálydefiníció a fő osztály # ##
Widgetek deklarálása: a widgetek egy olyan program, amelyet az általunk használt GUI könyvtárak határoznak meg. Például egy widget egy gomb, egy ablak, egy doboz stb. Ezeket a widgeteket deklaráljuk a programunkban.
self.window = Gtk.Window () ### window ### self.box = Gtk.Box () ### box #### self.button = Gtk.Button (label = 'Open') ### # nyitógomb #### self.button = Gtk.Button (label = 'Close') #### close button #### self.window.add (self.box) #### a doboz a a window #### self.box.pack_start (self.button, True, True, 0) nevű ablak ##### a gombot a ### self.window.show_all () ## mező neve tartalmazza # az egész ablakot megmutatjuk ### gui = gui () ### létrehoz egy gui objektumot ####
A programunkat az asztalunkon egyszerűnek nevezett mappába helyezzük
Megnyitjuk a mappát a terminállal, esetemben a Nemot használom a Linux Mint 14-ből.
A fordításhoz beletesszük a python gui.py terminált
lásd a képet.
Most láthatjuk a PyGTK 3 könyvtárakkal létrehozott kis programunkat vagy új widgetünket
Ez egy egyszerű ablak, két gombbal.
Most három részre osztjuk a programot, majd meghagyom a három fájl kódját.
Első gui.py fájl
a gi.tárból import Gtk a megsemmisítésből megsemmisítés az io importból io import go (megsemmisítés, 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 ()
Második io.py fájl
class io: def on_open_clicked (self, button): print "\" Open \ "gombra kattintottak"
A harmadik fájl destr.py
from gi.repository import Gtk class destr: def on_close_clicked (self, button): print "Bezáró alkalmazás" Gtk.main_quit ()
A három fájlt esetünkben ugyanabba a mappába helyezzük, a mappát egyszerű osztottnak nevezzük.
A három fájl összeállításához. Megnyitjuk a mappát a terminállal, és egyszerűen visszatesszük a terminálba
python gui.py
A gui.py kód módosításai
a megsemmisítésből megsemmisítés ### utasítás a fájlunk importálásához a megsemmisítés.py ### az io importból io ### utasítás a fájlunk importálásához io.py ### class gui (megsemmisítés, io): #### osztályba fő hozzáadjuk a pusztító alosztályokat és io ####
Láthatja, hogy a mondat
def on_open_clicked (self, button): print "\" Open \ "gombra kattintottak"
Nincs a gui.py fájlban, hanem az io.py fájlban
Mondat
def on_close_clicked (saját, gomb):
print "Bezáró alkalmazás"
Gtk.main_quit ()
a destr.py fájlban található
Így feloszthatunk egy programot sok fájlra, amelyek különböző könyvtárakban találhatók egyszerre.
Másrészt a Python a szabad szoftver pillére, és a GTK 3.6 /3.8-mal való működésre van adaptálva, neve PyGTK. A Python KDE-hez való alkalmazkodását PyQT-nek hívják.
A Python Mac OS és WINDOWS rendszerekhez van adaptálva.
Remélem, hogy ez a PyGTK3 mini oktatóanyag hasznos volt az Ön számára. Minden konstruktív kritikát megfogalmazhatnak, amire vágynak.
Ismerek néhány Gtk 3.4 /3.6-ot és Vala GTK 3.4 / 3.6-ot is.
http://www.youtube.com/watch?v=9ckRn_sx8CE
Végül a KDE felhasználói elnézést kérnek azért, mert nem készítettek egy mini oktatóanyagot a KDE számára.
A kde-ben inkább a kdevelop-ot használom (azt hiszem, így hívják) a gui könnyű létrehozásához, de még mindig nehezen találom meg a folyamatokat, hogy megvalósuljon x dolog: '(
Remek nekünk, akik Python-ot használunk: D!
Üdvözlet!
Helló, régóta követem ezt a közösséget, és nem vagyok benne biztos, hogy ez az első alkalom, ha kommenteltem, vagy már korábban is megtettem 😀 (Nem igazán vagyok hajlandó kommenteket írni az internetre igazán). A helyzet az, hogy azért teszek, hogy javaslatot hagyjak Elav és a KZKG ^ Gaara rendszergazdáiként, és úgy gondolom, hogy jó ötlet lenne egy plugint hozzáadni a szintaxis színezéséhez, mivel mostanában több bejegyzést látok kóddal különböző programozási nyelveken. Tudom, hogy elég sok plugin van, de még egyet sem próbáltam ki, mivel nem vagyok WordPress felhasználó, ezért hagyom, hogy gondolkodjon a kérés életképességén. Megragadom az alkalmat, hogy megkérdezzem a többi olvasót, hogy mi a véleményük az ötletről, mert tudom, hogy vannak olyan emberek, akik szívesebben elolvassák a kódot mindenféle díszítés nélkül. Elnézést kérek, ha ezt itt már kommentálták, és valamilyen oknál fogva elutasították, mivel nem emlékszem, hogy vita történt volna a témában.
Az az igazság, hogy szeretnék lehetőséget kapni a szintaxis színezésére a programozási nyelvek kódjának kiemelésére.
Ez segítene azoknak a felhasználóknak, akik szeretnének megtanulni programozási nyelveket.
De hé, én is jól érzem magam a fórummal, és hogy együtt tudunk beszélgetni és tanulni.
A GNU Emacs kényelmesebb, mivel legalább meg kell választania, hogy melyik programnyelv-ellenőrzőben szeretne dolgozni (ha nem akar nagyobb súlyt a processzorának, használja a GNU Nano-t, és élvezze a legjobbat a minimalizmusban).
Az Elio WordPress-ről beszélünk. Megvalósítva a blogon Desde Linux. Nem rendelkezik azzal a funkcióval, hogy kiszínezze a bejegyzések betűit.
Ó, sajnálom.
A Naaa emacs kényelmes azok számára, akiknek 84 ujja van XD .., normális emberek, szövegtárs, sublimetext vagy jegyzettömb ++ xd
A valószínűtlen dolog az, hogy nem tanultuk meg a gépelést, ami szükséges a GNU Emacs és a billentyűparancsok megfelelő kezeléséhez. Ezenkívül a grafikus felhasználói felülete megkönnyíti a menük használatát (használható a Windows rendszerben is, de nem ajánlott normál módban, hanem parancssoros üzemmóddal csinálni, hogy a win32 ne bojkottálja a szkriptet).
Nagyon jó bemutató. De egyébként a python forráskódja nincs lefordítva, hanem egy értelmezett nyelv.
Ál kódra fordítható. Nem a gépi nyelv, hanem a bájtok jelentenek valamit az értelmező számára, de a folyamatot fordítottnak is nevezzük. Ebben az értelemben azt lehet mondani, hogy valami össze van állítva.
Talán jobb, ha megtanuljuk a pytgk2-t, mert a Windows számára elérhető legfrissebb verzió a 2.24. A 3. sorozat feltűnő hiánya miatt. És a rossz nyelvek azt mondják, hogy a gnóm minden új verzióban megtöri az összes apisot.
Programozok egy modellt a GTK 3.4 / 3.6-mal, és az az igazság, hogy megtörik a türelmed és a fejed, át kell írnod a kódot, most már értem, miért panaszkodnak a Linux Mint emberei a GTK-ra és a GNOME projektre.
A MINT tagjaival egyetértek a GTK 2.4-el, ez nem történt meg.
Jó bemutató és referenciák.
Csak egy részlet, mivel a kódot beillesztették, a Pythonban a behúzások kötelezőek, és ezeket a példakódban be kell tartani.
Üdvözlet!
El tudnád magyarázni, miből állnak a Python kötelező azonosításai? Az igazat megvallva még soha nem hallottam ilyet. Rosszul vagyok hozzászokva a PyGTK 2/3 angol fórumaihoz, és talán figyelmen kívül hagyom.
A Pythonban nem használsz olyan kulcsokat, mint a C-ben, vagy a kezdő / befejező blokkokat, mint a Pascal-ban, de mindent a kód által megadott behúzáson keresztül értünk meg. Vagyis a blokkokat behúzottnak ismerik el. Ez egy olyan tulajdonság, amelyet különösen szeretek. Kerüli a kulcsok és hasonló dolgok írását.
Csak nem tetszik ez, egyszerűbbnek tűnik két kis kulcsot vagy egy std :: endl; -t elhelyezni, mint látni, ha az xd sor jól van táblázva
: p A programozó tanárod 0-t ad neked. Vagy ami még rosszabb, kirúgják a munkádból. Ami a legfontosabb, hogy a kód olvasható legyen mindazzal, ami azt implikálja
záró zárójelekkel végződik, ez sokkal olvashatóbbá tesz engem XD ..
Komolyan???
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);}
Látod? Behúzások nélkül nem nagyon érthető. És ez könnyű. Bonyolultabbnál csak a fordító érti meg. A helyzet az, hogy mivel Önnek egyébként is behúzódnia kell (hogy az emberek megértsék a kódot), miért lenne felesleges és használna elválasztókat? Elég behúzással és ennyi.
Természetesen semmit nem értenek, mert nem tartják be a jó írás szabályait egy c / c ++ programban. Amit tettél, mindenre érvényes, például egy funkció beágyazására, egy olyan funkció belsejében, amely egy másik függvényben van, ami egy másikban van, akkor látni akarlak xd-t, ha képes megérteni.
egyébként két megjelenéssel ez a kód könnyen érthető xD
Amit tettem, azt szándékosan tettem, hogy megmutassam neked, hogy behúzás nélkül, bár összeáll, rendkívül nehéz megérteni egyetlen kódot sem. Tehát 2 szabálya van: Behúzás és átfogás a határolókkal. De ez felesleges. A Pythonban az ilyen kódot egyszerűen nem fogadja el a tolmács. És csak egy szabályod van: Behúzás. Könnyen.
De hát, mindenki az ízlésével.
Mindkettő jó, behúzott és nem behúzott, véleményem szerint a pontosvesszőt vagy rubint preferálom, hasonlóan a pythonhoz, de a behúzás nem szükséges.
Így lehet jobban megérteni: P:
echo 'int main (int argc, char * argv []) {programnév = argv [0]; míg ((argc> 1) && (argv [1] [0] ==' - ')) {switch (argv [ 1] [1]) {v eset: verbózus = 1; break; case 'o': out_file = & argv [1] [2]; break; case 'l': line_max = atoi (& argv [1] [2]); break; alapértelmezett: fprintf (stderr, »Rossz opció % 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;'
Üdvözlet 😀
Szerintem Carlos azt jelenti, hogy ahol a kód kijön, ott nincs behúzás. A másolás és beillesztés csak nem fog működni. Nem tudom, hogy létezik-e a címke poszt létrehozásakor
a nyelvi kód megadásához. Jó lenne, ha megfogalmaznák, ha nem létezik.
Már láttam, hogy mi a probléma: a CODE Tag eltávolítja az összes szóközt és fület (ezt nem szabad !!! A0 hexában (160 dec.), Bár azt hiszem, ez a betűtípustól függ (nem tudom) Ha használják, akkor így jön ki:
def fib(n):
a, b = 0, 1
while a < n:
print(a)
a, b = b, a+b
Hogy a tesztjeimen jól néz ki, de nincs előzetesem, amikor válaszokat teszek fel (és ennek lennie kell !!!) Ha nem jön ki, akkor nem az én hibám
Nézze meg azokat a példákat, amelyeket Sebastian Pölsterl a PyGTK 3 oktatóanyagában bemutat, Sebastian nem helyez el címkéket.
Példa :
http://python-gtk-3-tutorial.readthedocs.org/en/latest/entry.html#example
láthatja Sebastian összes oktatóanyagát.
Nem tudom, mire gondolsz. Azt mondom, hogy itt, a bejegyzésekben, nem lehet használni a "CODE" HTML címkét úgy, hogy amit kódként tesz be, az jól behúzódna. A hivatkozott oldalon, ha látja az oldal forrásait, látni fogja, hogy nem a CODE-t használja, hanem más HTML-elválasztókat használ.
Nem ellentétes az Ön által betöltött kóddal, hanem rámutat egy hibára a webhely feladásának rendszerében. Amit talán az adminok kijavíthatnak.
Amikor címkékről beszélek, nyilván a HTML-ről beszélek, nem pedig a Python-ról. Mindenesetre, ha behúzás nélküli kódot tesz be a Pythonba, az egyszerűen nem fog működni. Ha jön egy újonc és lemásolja a kódot, amint az megjelenik ebben a bejegyzésben, és megpróbálja futtatni, akkor nem fog sikerülni. Lehet, hogy csalódott vagy, mivel újszülött vagy. Ismét a hiba nem a tiéd; és az előző korábbi válaszomban azt tettem, hogy módot adtam a probléma megoldására a felhasználó-ki-hozzászólás szintjén.
Teljesen igazad van, a kód másolása helyett fényképeket kellett volna feltöltenem.
annak bemutatására, hogy a PyGTK 3-ban hogyan rendezik az utasításokat megfelelően.
A python programozásához ajánlom az Eclipse használatát a PyDev pluginnel vagy a Pychar m-mel
Mint fent említettük, ezért nem szeretem a pitont a mélyedések miatt. Mint láttuk, a másolás és beillesztés nem fog működni, ami más nyelvekkel, például C, Java, PHP stb.
Az olvashatóság dolog, alkalmazunk egy kódszépítőt (például http://indentcode.net/ ) és kész,
A csúnya fix, de ha nincs behúzás és a logika megváltozik, akkor hangot adunk ..
Új vagyok a PyGTK-ban, lehet-e kölcsönhatásba lépni a shell szkriptekkel ezen a nyelven?
Köszönöm a bemutatót.
Üdvözlet.