Zainstaluj niezbędne pakiety
Aby stworzyć aplikację przy użyciu Pythona 3 i GTK3, musisz zainstalować powiązania Pythona dla bibliotek GObject. Można to zrobić, instalując pakiet PyGObject zawarty w repozytoriach prawie wszystkich głównych dystrybucji Linuksa. Aby zainstalować te zależności w Ubuntu, możesz użyć poniższego polecenia:
$ sudo apt zainstaluj python3 python3-giMożesz także skompilować PyGObject z kodu źródłowego dostępnego tutaj.
Pełny kod aplikacji Hello World
Pełną próbkę kodu aplikacji Hello World napisanej w Pythonie 3 i GTK3 można znaleźć poniżej. Ta aplikacja wysyła komunikat „Hello World !!”powiadomienie na pulpicie po kliknięciu przycisku.
importuj prezentżołnierz amerykański.require_version("Gtk", "3.0")
żołnierz amerykański.require_version('Powiadom', '0.7')
z gi.import repozytorium Gtk
z gi.import repozytorium Powiadom
class MyWindow(Gtk.Okno):
def __init__(self):
Gtk.Okno.__init__(self, title="Witaj świecie")
Gtk.Okno.set_default_size(self, 640, 480)
Notyfikować.init("Prosta aplikacja GTK3")
samego siebie.pudełko = Gtk.Pudełko (rozstaw=6)
samego siebie.dodaj (siebie.pudełko)
samego siebie.przycisk = Gtk.Przycisk(label="Kliknij tutaj")
samego siebie.przycisk.set_halign(Gtk.Wyrównać.ŚRODEK)
samego siebie.przycisk.set_valign(Gtk.Wyrównać.ŚRODEK)
samego siebie.przycisk.connect("kliknięty", self.on_button_clicked)
samego siebie.pudełko.pack_start(self.przycisk, Prawda, Prawda, 0)
def on_button_clicked(self, widget):
n = Powiadom.Powiadomienie.new("Prosta aplikacja GTK3", "Witaj świecie !!")
nie.pokazać()
wygrana = Moje Okno()
zdobyć.connect("zniszcz", Gtk.main_quit)
zdobyć.Pokaż wszystko()
Gtk.Główny()
Zrzut ekranu końcowego wyniku.
Powiadomienie na pulpicie, które pojawia się po kliknięciu przycisku „Kliknij tutaj”:
Wyjaśnienie krok po kroku
Różne polecenia „import” w pierwszych kilku wierszach kodu importują niezbędne moduły wymagane do działania aplikacji. Moduły te udostępniają liczne klasy i funkcje, które można wykorzystać w aplikacji. "Żołnierz amerykański.Instrukcje require_version” zapewniają, że importowana jest tylko wymagana wersja biblioteki, aby uniknąć problemów ze zgodnością i awarii. W tym przypadku „3.0” służy do upewnienia się, że w aplikacji jest używana biblioteka GTK3, a nie GTK2 lub inna wersja GTK.
Podobnie jak klasa GTK, klasa Notify jest również importowana poprzez określenie jej wymaganej wersji (0.7 to najnowsza wersja w momencie pisania tego artykułu). Ta klasa będzie używana później w aplikacji.
importuj prezentżołnierz amerykański.require_version("Gtk", "3.0")
żołnierz amerykański.require_version('Powiadom', '0.7')
z gi.import repozytorium Gtk
z gi.import repozytorium Powiadom
Następne podklasy instrukcji „Gtk.Window” jako klasa „MyWindow”. „Gtk.Okno.Metoda __init__” inicjuje konstruktor superklasy (Gtk.Window), z którego utworzono podklasę (MyWindow). W konstruktorze tytuł aplikacji jest również ustawiany jako „Hello World” za pomocą argumentu „title”. Domyślna geometria okna aplikacji jest również ustawiana poprzez określenie szerokości i wysokości w metodzie „set_default_size”.
class MyWindow(Gtk.Okno):def __init__(self):
Gtk.Okno.__init__(self, title="Witaj świecie")
Gtk.Okno.set_default_size(self, 640, 480)
Następnie metoda „init” klasy Notify służy do inicjalizacji biblioteki „libnotify” poprzez podanie tytułu aplikacji. Bez inicjalizacji powiadomienia nie będą wysyłane i wyświetlane na pulpicie systemu Linux.
Notyfikować.init("Prosta aplikacja GTK3")Instrukcja „box” dodaje pusty kontener układu do głównego okna aplikacji. Ten kontener jest jak puste płótno, na którym można umieścić dowolną liczbę widżetów. „Odstęp” odnosi się do przestrzeni między widżetami w jednostkach „pikseli”.
samego siebie.pudełko = Gtk.Pudełko (rozstaw=6)samego siebie.dodaj (siebie.pudełko)
Nowy widżet przycisku „Kliknij tutaj” jest tworzony za pomocą „Gtk.Przycisk” metoda. Następnie jest wyrównywany do poziomych i pionowych środków układu macierzystego pudełka przy użyciu metod „set_halign” i „set_valign”. Przycisk jest połączony z sygnałem „kliknięty”, dzięki czemu po każdym naciśnięciu przycisku można wywołać metodę zwrotną „on_button_clicked”. Na koniec widżet przycisku jest wstawiany od lewej wzdłuż osi poziomej do układu pudełka za pomocą „pudełka.pack_start” metoda. Ta metoda przyjmuje cztery argumenty: obiekt widżetu, który ma zostać dodany, wartość logiczna do rozwijania widżetu, wartość logiczna do wypełniania widżetu oraz wypełnienie między dodanymi a innymi sąsiednimi widżetami.
samego siebie.przycisk = Gtk.Przycisk(label="Kliknij tutaj")samego siebie.przycisk.set_halign(Gtk.Wyrównać.ŚRODEK)
samego siebie.przycisk.set_valign(Gtk.Wyrównać.ŚRODEK)
samego siebie.przycisk.connect("kliknięty", self.on_button_clicked)
samego siebie.pudełko.pack_start(self.przycisk, Prawda, Prawda, 0)
Metoda „on_button_click” jest wywoływana po każdym naciśnięciu przycisku „Kliknij tutaj”. Nowe powiadomienie jest tworzone przy użyciu metody „nowe”, która jako argumenty przyjmuje tytuł i treść powiadomienia. To powiadomienie jest następnie wyświetlane na pulpicie przy użyciu metody „pokaż”. Możesz także przenieść instrukcję „new” do głównego konstruktora, aby uniknąć ponownego tworzenia powiadomienia po każdym naciśnięciu przycisku.
def on_button_clicked(self, widget):n = Powiadom.Powiadomienie.new("Prosta aplikacja GTK3", "Witaj świecie !!")
nie.pokazać()
Kilka następnych stwierdzeń dotyczy tworzenia, zarządzania i wyświetlania nowego okna aplikacji. Tworzona jest nowa instancja klasy „MyWindow” i jest ona podłączona do sygnału „destroy”, aby zapewnić prawidłowe zamknięcie aplikacji za każdym razem, gdy użytkownik zdecyduje się zamknąć aplikację, klikając przycisk „x”. Metoda „show_all” wyświetla okno aplikacji na pulpicie systemu Linux. Na koniec uruchamiana jest główna pętla aplikacji odpowiedzialna za obsługę zdarzeń i sygnałów.
Wniosek
GTK3 i Qt to jedne z najpopularniejszych frameworków GUI używanych do tworzenia aplikacji działających natywnie w systemie Linux. Oba te frameworki pozwalają na pisanie głównej logiki w językach C++ i Python. Nie możesz się pomylić, wybierając jeden z tych zestawów narzędzi do następnego projektu aplikacji dla systemu Linux.