Jak tworzyć aplikacje GUI pod komputerem Linux za pomocą PyGOBject - Część 1

- 1197
- 305
- Roland Sokół
Tworzenie aplikacji w systemie Linux można wykonać przy użyciu różnych sposobów, ale istnieją ograniczone sposoby robienia, więc przy użyciu najprostszych i najbardziej funkcjonalnych języków i bibliotek programowania, dlatego będziemy szybko wyglądać na tworzenie aplikacji pod Linux Desktop za pomocą biblioteki GTK+ z językiem programowania Python, który nazywa się „Pygobject".
Pygobject Używa introspekcji Gobject, aby stworzyć wiązanie dla języków programowania, takich jak Python, PygObject jest następną generacją z Pygtk, można powiedzieć, że PygObject = Python + GTK3.

Dzisiaj rozpoczniemy serię o tworzeniu aplikacji GUI (graficzny interfejs użytkownika) pod pulpitem Linux za pomocą biblioteki GTK+ i Pygobject Język, seria obejmie następujące tematy:
Część 1: Jak tworzyć aplikacje GUI w systemie Linux Desktop za pomocą PyGoBject Część 2: Tworzenie większej liczby aplikacji PyGobject w Linux Część 3: Utwórz własne aplikacje „przeglądarki internetowe” i „rejestrator komputerowy” za pomocą PyGoBject Część 4: Opakowanie Programy Pygobject dla komputerów stacjonarnych Linux Część 5: Tłumaczenie aplikacji Pygobject na różne językiO Pythonie
Przede wszystkim musisz mieć podstawową wiedzę w Pythonie; Pyton jest bardzo nowoczesnym i łatwym w użyciu językiem programowania. Jest to jeden z najbardziej znanych języków programowania na świecie, za pomocą Pythona, będziesz mógł stworzyć wiele świetnych aplikacji i narzędzi. Możesz wziąć udział w bezpłatnych kursach, takich jak te w Codeacademy.com lub możesz przeczytać książki o Pythonie na:




O GTK+
GTK+ jest otwartym narzędziami na zestaw narzędzi do tworzenia graficznych interfejsów użytkownika dla aplikacji stacjonarnych, został rozpoczęty w 1998 roku jako zestaw narzędzi GUI dla GIMP, później był używany w wielu innych aplikacjach i wkrótce stał się jedną z najbardziej znanych bibliotek Aby stworzyć GUI. GTK+ jest wydawany na podstawie licencji LGPL.
Tworzenie aplikacji GUI pod Linux
Istnieją 2 sposoby tworzenia aplikacji za pomocą GTK+ i Python:
- Zapisanie interfejsu graficznego za pomocą tylko kodu.
- Projektowanie interfejsu graficznego za pomocą „Polana”Program; które jest narzędziem RAD do łatwego projektowania interfejsów GTK+, Glade generuje GUI jako plik XML, którego można użyć z dowolnym językiem programowania do budowy GUI, po wyeksportowaniu pliku XML GUI, będziemy mogli połączyć plik XML z naszym Program do wykonywania żądanych zadań.
W skrócie wyjaśnimy w obie strony.
Droga tylko dla kodu
Pisanie GUI za pomocą kodu może być trochę trudne dla programistów Noob i bardzo chwiejnych czasów, ale za pomocą go możemy tworzyć bardzo funkcjonalne GUI dla naszych programów, bardziej niż te, które tworzymy za pomocą niektórych narzędzi, takich jak Glade.
Weźmy następujący przykład.
#!/usr/bin/python #-*-kodowanie: UTF-8-*-z GI.Repozytorium importują klasę GTK OurWindow (GTK.Okno): def __init __ (self): gtk.Okno.__init __ (self,) gtk.Okno.set_default_size (self, 400,325) gtk.Okno.set_position (self, gtk.Pozycja okienna.Środkowy) Button1 = GTK.Button („Cześć, świat!") przycisk 1.Connect („kliknięte”, jaźń.WhenButton1_Clicked) Self.Dodaj (Button1) def WhenButton1_Clicked (Self, Button): Drukuj „Hello, World!„Windows = OuTWindow () Window.Connect („Delete-Event”, GTK.main_quit) okno.show_all () gtk.główny()
Skopiuj powyższy kod, wklej go w „test.py”Plik i ustaw uprawnienie 755 na teście.plik py i uruchom plik później za pomocą „./test.py”, To, co dostaniesz.
# Test nano.test PY # CHMOD 755.py # ./test.py

Klikając przycisk, widzisz „Witaj świecie!”Zdanie wydrukowane w terminalu:

Pozwól, że wyjaśnię kod szczegółowe wyjaśnienie.
- #!/usr/bin/python: Domyślna ścieżka dla interpretera Pythona (wersja 2.7 W większości przypadków ta linia musi być pierwszą linią w każdym pliku Pythona.
- # -* -Kodowanie: UTF -8 -*-: Tutaj ustawiamy domyślne kodowanie pliku, UTF-8 jest najlepsze, jeśli chcesz obsługiwać języki nieanglojęzyczne, zostaw to tak.
- z GI.Repozytorium import GTK: Tutaj importujemy bibliotekę GTK 3, aby użyć jej w naszym programie.
- Klasa OurWindow (GTK.Okno): Tutaj tworzymy nową klasę, która nazywa się „OurWindow”, ustawiamy również typ obiektu klasy na „GTK.Okno".
- def __init __ (self): Nic nowego, definiujemy główne elementy okna tutaj.
- GTK.Okno.__init __ (self, title = „My Hello World Program”): Używamy tej linii, aby ustawić tytuł „My Hello World Program” na okno „OurWindow”, możesz zmienić tytuł, jeśli chcesz.
- GTK.Okno.set_default_size (self, 400,325): Nie sądzę, aby ta linia wymagała wyjaśnienia, tutaj ustawiamy domyślną szerokość i wysokość dla naszego okna.
- GTK.Okno.set_position (self, gtk.Pozycja okienna.CENTRUM): Korzystając z tej linii, będziemy mogli ustawić domyślną pozycję dla okna, w tym przypadku ustawiamy ją na środku za pomocą „GTK.Pozycja okienna.Parametr środkowy, jeśli chcesz, możesz go zmienić na „GTK.Pozycja okienna.Mysz ”, aby otworzyć okno na pozycji wskaźnika myszy.
- Button1 = GTK.Przycisk („Cześć, świat!”): Stworzyliśmy nowy GTK.Przycisk i nazwaliśmy to „Button1”, domyślnym tekstem dla przycisku jest „Witaj, świat!”, Możesz utworzyć dowolny widżet GTK, jeśli chcesz.
- przycisk 1.Connect („kliknięte”, jaźń.WhenButton1_Clicked): Tutaj łączymy sygnał „kliknięte” z akcją „WhenButton1_Clicked”, tak że po kliknięciu przycisku aktywowano akcję „WhenButton1_Clicked”.
- samego siebie.Dodaj (przycisk 1): Jeśli chcemy, aby nasze widżety GTK pojawiły się, musimy je dodać do domyślnego okna, ten prosty wiersz dodaje widżet „przycisk1” do okna, bardzo trzeba to zrobić.
- def WhenButton1_Clicked (self, przycisk): Teraz definiujemy akcję „WhenButton1_Clicked” tutaj, definiujemy, co się wydarzy, gdy klikany zostanie widżet „przycisk.
- Drukuj „Cześć, świat!": Nie muszę tutaj wyjaśniać więcej.
- okno = OurWindow (): Musimy utworzyć nową zmienną globalną i ustawić ją na klasie OurWindow (), abyśmy mogli to nazwać później za pomocą biblioteki GTK+.
- okno.Connect („Delete-Event”, GTK.main_quit): Teraz łączymy sygnał „Usuń zdanie” z „GTK.Main_quit ”Działanie, jest to ważne, aby usunąć wszystkie widżety po automatycznym zamknięciu okna programu.
- okno.Pokaż wszystko(): Pokazanie okna.
- GTK.główny(): Uruchamianie biblioteki GTK.
To wszystko, łatwe nie? I bardzo funkcjonalne, jeśli chcemy utworzyć duże aplikacje. Aby uzyskać więcej informacji na temat tworzenia interfejsów GTK+ za pomocą sposobu tylko kodu, możesz odwiedzić oficjalną stronę dokumentacyjną:
Samouczki Python GTK3
Droga designerska polany
Jak powiedziałem na początku tego artykułu, Glade jest bardzo łatwym narzędziem do tworzenia interfejsów potrzebnych do naszych programów, jest bardzo znana wśród programistów i utworzono wiele świetnych interfejsów aplikacji. W ten sposób nazywa się „Rapid Applications Development”.
Musisz zainstalować Glade, aby zacząć go używać, w Run Debian/Ubuntu/Mint:
$ sudo apt --gnij instaluj polanę
Na Redhat/Fedora/Centos, biegaj:
# mniam zainstaluj Glade
Po pobraniu i zainstalowaniu programu, a po uruchomieniu zobaczysz dostępne widżety GTK po lewej stronie, kliknij „okno„Widget, aby utworzyć nowe okno.

Zauważysz, że powstaje nowe puste okno.

Możesz teraz dodać do niego widżety, na lewym pasku narzędzi, kliknij „przycisk”Widget i kliknij puste okno, aby dodać przycisk do okna.

Zauważysz, że identyfikator przycisku to „przycisk 1”, Patrz teraz karta Signals na odpowiednim pasku narzędzi i wyszukaj„kliknięte„Sygnał i wejdź”Button1_Clicked" pod tym.


Teraz, gdy stworzyliśmy nasz GUI, wyeksportujmy to. Kliknij na "Plik”Menu i wybierz„Ratować”, Zapisz plik w katalogu domowym w nazwie„MyProgram.polana”I wyjście.

Teraz stwórz nowe „test.py”Plik i wprowadź następujący kod w nim.
#!/usr/bin/python #-*-kodowanie: UTF-8-*-z GI.Repozytorium importu GTK Class Handler: def Button_1clicked (self, przycisk): drukuj „Hello, świat!"Builder = GTK.Builder () Builder.add_from_file („myProgram.Glade ") Builder.connect_signals (handler ()) ourNewButton = budowniczy.get_Object („Button1”) OurNewButton.set_label („Cześć, świat!") Window = Builder.okno get_Object („Window1”).Connect („Delete-Event”, GTK.main_quit) okno.show_all () gtk.główny()
Zapisz plik, podaj mu 755 uprawnień, takich jak wcześniej i uruchom go za pomocą „./test.py”, I to dostaniesz.
# Test nano.test PY # CHMOD 755.py # ./test.py

Kliknij przycisk, a zauważysz, że „Witaj świecie!”Zdanie jest wydrukowane w terminalu.
Teraz wyjaśnijmy nowe rzeczy:
- Handler klasy: Tutaj tworzymy klasę o nazwie „Handler”, która będzie zawierać definicje działań i sygnałów, tworzymy dla GUI.
- Builder = GTK.Budowniczy(): Stworzyliśmy nową globalną zmienną o nazwie „Builder”, która jest GTK.Widżet konstruktora, jest to ważne, aby zaimportować .plik dload.
- budowniczy.add_from_file („myProgram.polana"): Tutaj importujemy „myProgram.plik Glade ”, aby użyć go jako domyślnego GUI dla naszego programu.
- budowniczy.connect_signals (handler ()): Ta linia łączy .plik połknięcia klasy obsługi, aby akcje i sygnały, które definiujemy w klasie „Handler” działały dobrze podczas uruchamiania programu.
- OurNewButton = Builder.get_Object („Button1”): Teraz importujemy obiekt „Button1” z .plik Glade, przekazujemy go również do globalnej zmiennej „OurNewbutton”, aby użyć go później w naszym programie.
- OurNewbutton.set_label („Cześć, świat!”): Użyliśmy „zestawu.Etykieta „Metoda ustawienia domyślnego tekstu przycisku na„ Witaj, świat!" zdanie.
- okno = budowniczy.Get_Object („Window1”): Tutaj zadzwoniliśmy do obiektu „Window1” z .plik Glade, aby pokazać go później w programie.
I to wszystko! Pomyślnie utworzyłeś swój pierwszy program pod Linux!
Oczywiście jest o wiele bardziej skomplikowane rzeczy do zrobienia, aby stworzyć prawdziwą aplikację, która coś robi, dlatego polecam przyjrzeć się dokumentacji GTK+ i interfejs API GOBject na:
- GTK+ Instrukcja referencyjna
- Odniesienie Python Gobject API
- Odniesienie do Pygobject
Czy opracowałeś jakąkolwiek aplikację wcześniej pod pulpitem Linux? Jaki język i narzędzia programowania użyły do tego? Co sądzisz o tworzeniu aplikacji za pomocą Python & GTK 3?
- « Tłumaczenie aplikacji Pygobject na różne języki - Część 5
- Głębokie spostrzeżenia systemu „Ubuntu Linux” - czy to widzimy? »