Zamierzamy stworzyć mały program z PyGTK 3.0, który będzie działał również z PyGTK 3.4. Ten mały GUI nauczy Cię, jak podzielić program na dwa lub więcej plików.
Możesz odwiedzić samouczek Sebastiana Pölsterla na temat nowego PyGTK 3, oto nowy samouczek, zostawiam link:
http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html
To jest blog Sebastiana.
Jedną z krytyki tego samouczka ze strony Sebastiana jest to, że nie uczy, jak podzielić program na części lub kilka plików, byłoby dobrze, gdyby pokazał przykład, jak to zrobić za pomocą PyGTK 3.
Wszystkie duże i złożone programy są podzielone na wiele plików, a pliki są nawet umieszczane w innych katalogach, to znaczy znajdują się w różnych folderach.
Zacznijmy od małego przykładu:
Oto kod do pisania w jednym pliku o nazwie gui.py. Otwieramy edytor tekstu Gedit lub edytor, którego używamy najczęściej, kopiujemy poniższy kod i zapisujemy jako gui.py
from gi.repository import Gtk class gui (): def on_open_clicked (self, button): print Kliknięto przycisk "\" Open \ "" def on_close_clicked (self, button): print "Zamykanie aplikacji" 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 ("clicked", self.on_open_clicked) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button ( label = 'Zamknij') 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 kliknięto przycisk "\" Otwórz \ ""
Jest to funkcja, która jest aktywowana w terminalu po kliknięciu przycisku otwierania. Sygnał do aktywacji to:
self.button.connect ("clicked", self.on_open_clicked) def on_close_clicked (self, button): print "Zamykanie aplikacji" Gtk.main_quit ()
Jest to funkcja, która jest aktywowana po kliknięciu przycisku zamykania.
zamknij program, który uruchamiamy.
sygnał do jego aktywacji to
self.button.connect ("clicked", self.on_close_clicked) z gi.repository import Gtk ### wywołujemy biblioteki PyGTK ### class gui (): ### definicja klasy o nazwie gui to główna klasa # ##
Deklaracja widżetów: widżety to program z góry określony przez biblioteki interfejsu graficznego, których używamy. Na przykład widżety to przycisk, okno, pudełko itp. Oto widgety, które deklarujemy w naszym programie.
self.window = Gtk.Window () ### window ### self.box = Gtk.Box () ### box #### self.button = Gtk.Button (label = 'Open') ### # przycisk otwierania #### self.button = Gtk.Button (label = 'Zamknij') #### przycisk zamykania #### self.window.add (self.box) #### pudełko znajduje się w okno o nazwie window #### self.box.pack_start (self.button, True, True, 0) ##### przycisk znajduje się w polu o nazwie box ### self.window.show_all () ## # pokazujemy całe okno ### gui = gui () ### utwórz obiekt gui ####
Umieszczamy nasz program w folderze o nazwie simple na pulpicie
Otwieramy folder za pomocą terminala, w moim przypadku używam Nemo z Linux Mint 14.
Aby skompilować, umieszczamy w terminalu python gui.py
Zobacz zdjęcie.
Teraz możemy zobaczyć nasz mały program lub nowy widget utworzony za pomocą bibliotek PyGTK 3
Jest to proste okno z dwoma przyciskami.
Teraz dzielimy program na trzy części, a następnie zostawiam kod trzech plików.
Pierwszy plik gui.py
from gi.repository import Gtk from niszcz import niszcz z io import io class gui (niszcz, 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 ()
Drugi plik io.py
class io: def on_open_clicked (self, button): drukuj przycisk "\" Otwórz \ "został kliknięty"
Trzeci plik destru.py
from gi.repository import Gtk class zniszcz: def on_close_clicked (self, button): print "Zamykanie aplikacji" Gtk.main_quit ()
W naszym przypadku umieszczamy trzy pliki w tym samym folderze, folder nazywa się po prostu podzielony.
Aby skompilować trzy pliki. Otwieramy folder za pomocą terminala i po prostu umieszczamy go z powrotem w terminalu
python gui.py
Modyfikacje kodu gui.py
from Destroy import Destroy ### instrukcja, aby zaimportować nasz plik destru.py ### from io import io ### instrukcja, aby zaimportować nasz plik io.py ### class gui (niszcz, io): #### do klasa główna dodajemy podklasy zniszcz i io ####
Widać, że zdanie
def on_open_clicked (self, button): print kliknięto przycisk "\" Otwórz \ ""
Nie ma go w gui.py, jest w pliku io.py
Zdanie
def on_close_clicked (self, button):
print "Zamykanie aplikacji"
Gtk.main_quit ()
znajduje się w pliku destru.py
W ten sposób możemy podzielić program na wiele plików znajdujących się w różnych katalogach jednocześnie.
Z drugiej strony Python jest filarem wolnego oprogramowania i jest przystosowany do pracy z GTK 3.6 / 3.8, nazywa się PyGTK. Adaptacja Pythona dla KDE nazywa się PyQT.
Python jest dostosowany do systemów Mac OS i WINDOWS.
Mam nadzieję, że ten mini samouczek dotyczący PyGTK3 był dla Ciebie pomocny. Mogą przedstawić każdą konstruktywną krytykę, jakiej chcą.
Znam też trochę Gtk 3.4 /3.6 i Vala GTK 3.4 / 3.6.
http://www.youtube.com/watch?v=9ckRn_sx8CE
Na koniec użytkownicy KDE przepraszają, że nie zrobili mini tutoriala dla KDE.
W kde wolę używać kdevelop (myślę, że tak się to nazywa) do łatwego tworzenia gui, ale nadal mam trudności ze znalezieniem procesów, które to umożliwią x rzeczy: '(
Świetne dla tych z nas, którzy używają Python: D!
Pozdrowienia!
Witam, śledzę tę społeczność od dłuższego czasu i nie jestem pewien, czy to pierwszy raz, kiedy komentuję, czy już to zrobiłem 😀 (tak naprawdę nie przepadam za pisaniem komentarzy w sieci). Chodzi o to, że robię to, aby zostawić sugestię Elavowi i KZKG ^ Gaara jako administratorom i myślę, że dobrym pomysłem byłoby dodanie wtyczki do kolorowania składni teraz, gdy ostatnio widzę więcej postów z kodem w różnych językach programowania. Wiem, że jest sporo wtyczek, ale nie próbowałem żadnej, ponieważ nie jestem użytkownikiem wordpressa, więc zostawiam wam przemyślenie na temat wykonalności żądania. Korzystam z okazji, aby zapytać pozostałych czytelników, co myślą o tym pomyśle, ponieważ wiem, że są ludzie, którzy wolą czytać kod bez żadnych ozdób. Przepraszam, jeśli zostało to już tutaj skomentowane iz jakiegoś powodu zostało odrzucone, ponieważ nie pamiętam, bym widziała dyskusję na ten temat.
Prawda jest taka, że chciałbym mieć możliwość pokolorowania składni, aby podświetlić kod języków programowania.
Pomogłoby to użytkownikom, którzy chcą uczyć się języków programowania.
Ale hej, czuję się też dobrze z forum i możemy razem dyskutować i uczyć się.
GNU Emacs jest wygodniejszy, ponieważ przynajmniej musisz wybrać, w którym sprawdzaniu języka programowania chcesz pracować (jeśli nie chcesz większej wagi dla swojego procesora, użyj GNU Nano i ciesz się minimalizmem w najlepszym wydaniu).
Elio, mówimy o WordPressie. Zaimplementowane na blogu Desde Linux. Nie posiada funkcji kolorowania liter postów.
Oh przepraszam.
Naaa emacs jest wygodny dla tych, którzy mają 84 palce XD .., normalni ludzie, tekst, sublimetekst lub notatnik ++ xd
Niewiarygodne jest to, że nie nauczyłeś się pisania na klawiaturze, co jest wymagane, aby móc dobrze obsługiwać GNU Emacs i jego skróty klawiszowe. Ponadto jego GUI ułatwia korzystanie z jego menu (można go używać w systemie Windows, ale nie zaleca się robienia tego w trybie normalnym, ale w trybie wiersza poleceń, aby win32 nie bojkotował twojego skryptu).
Bardzo fajny tutorial. Ale tak przy okazji, kod źródłowy Pythona nie jest kompilowany, jest to język interpretowany.
Można go skompilować do pseudokodu. To nie język maszynowy, ale bajty reprezentują coś interpreterowi, ale proces jest również nazywany kompilacją. W tym sensie można powiedzieć, że coś jest kompilowane.
Być może lepiej jest nauczyć się pytgk2, ponieważ najnowsza wersja dostępna dla systemu Windows to 2.24. Seria 3 wyróżnia się brakiem. A złe języki mówią, że gnom łamie wszystkie małpy w każdej nowej wersji.
Programuję makietę z GTK 3.4 / 3.6 i prawda jest taka, że łamią ci cierpliwość i głowę, musisz przepisać kod, teraz rozumiem, dlaczego ludzie z Linux Mint narzekają na GTK i projekt GNOME.
Tym z MINT zgadzam się z GTK 2.4 tak się nie stało.
Dobry tutorial i referencje.
Tylko szczegół, ponieważ kod został wstawiony, w Pythonie wcięcia są obowiązkowe i powinny być przestrzegane w przykładowym kodzie.
Pozdrowienia!
Czy możesz wyjaśnić, na czym polegają obowiązkowe identyfikatory w Pythonie? Prawdę mówiąc, nigdy tego nie słyszałem. Jestem bardzo przyzwyczajony do anglojęzycznych forów PyGTK 2/3 i może to przeoczam.
W Pythonie nie używasz klawiszy jak w C lub bloków początku / końca, jak w Pascalu, ale wszystko jest zrozumiałe dzięki wcięciu, które podajesz w kodzie. Oznacza to, że bloki są rozpoznawane jako wcięte. To funkcja, którą szczególnie kocham. Unikasz pisania kluczy i tym podobnych rzeczy.
Po prostu mi się to nie podoba, wydaje się prostsze umieszczenie dwóch małych klawiszy lub std :: endl;, niż bycie widocznym, jeśli linia xd jest dobrze zestawiona
: p Twój nauczyciel programowania postawi dla Ciebie 0. Albo, co gorsza, zwolnią cię z pracy. Najważniejsze jest to, że kod jest czytelny ze wszystkim, co to oznacza
kończąc na zamykających nawiasach, czyni mnie znacznie bardziej czytelnym XD ..
Poważnie???
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);}
Zobaczysz? Bez wcięć nie jest to dobrze rozumiane. I to jest łatwe. W przypadku bardziej złożonego, tylko kompilator to rozumie. Chodzi o to, że skoro i tak MUSISZ wprowadzić wcięcia (aby ludzie zrozumieli kod), dlaczego miałoby to być zbędne i używać separatorów? Dość z wcięciem i to wszystko.
Oczywiście nic nie jest zrozumiałe, ponieważ nie przestrzegasz zasad dobrego pisania dla programu c / c ++. To, co zrobiłeś, jest ważne dla wszystkiego, na przykład zagnieżdżenia funkcji wewnątrz funkcji wewnątrz innej funkcji, która jest wewnątrz innej, to chcę cię zobaczyć xd, jeśli jesteś w stanie to zrozumieć.
przy okazji, z dwoma wyglądami, ten kod jest łatwo zrozumiały xD
To, co zrobiłem, zrobiłem celowo, aby pokazać, że bez wcięć, mimo kompilacji, niezwykle trudno jest zrozumieć jakikolwiek kod. Masz więc dwie zasady: wcięcie i objęcie ogranicznikami. Ale to jest zbędne. W Pythonie taki kod po prostu nie jest akceptowany przez interpretera. Masz tylko jedną zasadę: wcięcie. Łatwy.
Ale hej, każdy ze swoim gustem.
Oba są dobre, z wcięciem i bez wcięć, moim zdaniem wolę styl średnika lub ruby, podobny do Pythona, ale wcięcie nie jest konieczne.
Jest to lepiej zrozumiałe: P:
echo '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, »Zła opcja % 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;'
Pozdrowienia 😀
Myślę, że Carlos ma na myśli, że tam, gdzie pojawia się kod, nie ma wcięć. To z kopiowaniem i wklejaniem po prostu nie zadziała. Nie wiem, czy tag istnieje podczas tworzenia posta
wprowadzić kod języka. Byłoby dobrze, gdyby to ujęli, gdyby nie istniało.
Widziałem już w czym problem: tag CODE usuwa wszystkie spacje i tabulatory (nie powinien tego robić !!!). Ale jeśli umieścisz na nim nbsp, kod wygląda dobrze. A0 w hex (160 w dec), chociaż myślę, że może to zależeć od czcionki (nie wiem). Jeśli jest używany, wygląda to tak:
def fib(n):
a, b = 0, 1
while a < n:
print(a)
a, b = b, a+b
Że w moich testach wygląda dobrze, ale nie mam podglądu, kiedy piszę odpowiedzi (a tak powinno być !!!) Jeśli nie wychodzi, to nie moja wina culpa
Spójrz na przykłady, które Sebastian Pölsterl podaje w swoim samouczku PyGTK 3, Sebastian nie umieszcza etykiet.
Przykład:
http://python-gtk-3-tutorial.readthedocs.org/en/latest/entry.html#example
możesz zobaczyć cały tutorial Sebastiana.
Nie wiem, co masz na myśli. Chodzi mi o to, że tutaj, w postach, nie jest możliwe użycie tagu HTML „CODE”, aby to, co umieścisz jako kod i wyjdzie dobrze wcięte. Na odsyłanej stronie, jeśli spojrzysz na źródła strony, zobaczysz, że nie używa ona KODU, ale używa innych separatorów HTML.
Nie jest to sprzeczne z kodem, który umieściłeś, ale raczej wskazuje na błąd w systemie wysyłania wiadomości na tej stronie. Które, być może, administratorzy mogą naprawić.
Kiedy mówię o tagach, mam na myśli oczywiście HTML, a nie Python. W każdym razie, jeśli umieścisz kod bez wcięć w Pythonie, po prostu nie zadziała. Jeśli nowicjusz przyjdzie i skopiuje kod, który pojawia się w tym poście, i spróbuje go uruchomić, nie powiedzie się. Możesz być sfrustrowany, ponieważ jesteś nowicjuszem. Ponownie, wina nie jest twoja; aw mojej bezpośredniej poprzedniej odpowiedzi ustąpiłem sposobu rozwiązania problemu z poziomu użytkownika, który publikuje.
Masz całkowitą rację, powinienem był wgrać zdjęcia zamiast kopiować kod.
aby pokazać, jak prawidłowo uporządkowane są wyciągi w PyGTK 3.
Do programowania w Pythonie polecam używanie Eclipse z wtyczką PyDev lub Pychar m
Jak wspomniano powyżej, dlatego nie lubię Pythona z powodu wcięć. Jak widzieliśmy, kopiowanie i wklejanie nie będzie działać, co nie ma miejsca w przypadku innych języków, takich jak C, Java, PHP itp.
Jeśli chodzi o czytelność, stosujemy upiększanie kodu (np http://indentcode.net/ ) i gotowy,
Brzydota jest naprawiona, ale jeśli nie ma wcięcia, a logika jest zmieniona, brzmimy ...
Jestem nowy w PyGTK, czy jest możliwa interakcja ze skryptami powłoki w tym języku?
Dzięki za tutorial.
Pozdrowienia.