Jak utworzyć prostą aplikację w Python i GTK3

Jak utworzyć prostą aplikację w Python i GTK3
W tym artykule wyjaśniono, jak utworzyć graficzną aplikację „Hello World” w Linux za pomocą języka programowania Python 3 i GTK3 GUI Framework. Wszystkie próbki kodu w samouczku są testowane z Python 3.8.6 i GTK 3.24.23 na Ubuntu 20.10.

Zainstaluj niezbędne pakiety

Aby utworzyć aplikację za pomocą Python 3 i GTK3, musisz zainstalować powiązania Python 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 instal Python3 Python3-gi

Możesz także skompilować PyGobject z kodu źródłowego dostępnego tutaj.

Pełny kod aplikacji Hello World

Pełna próbka kodu aplikacji Hello World napisana w Python 3 i GTK3 można znaleźć poniżej. Ta aplikacja wysyła „Hello World !!”Powiadomienie na komputerze przy kliknięciu przycisku.

Import GI
żołnierz amerykański.wymaganie_wersji („GTK”, „3.0 ")
żołnierz amerykański.wymaganie_wersji („powiadomienie”, „0.7 ')
z GI.Repozytorium import GTK
z GI.Repozytorium Import Powiadom
klasa myWindow (GTK.Okno):
def __init __ (ja):
GTK.Okno.__w sobie,)
GTK.Okno.set_default_size (self, 640, 480)
Notyfikować.init („prosta aplikacja GTK3”)
samego siebie.Box = GTK.Pudełko (odstępy = 6)
samego siebie.Dodaj (ja.skrzynka)
samego siebie.Button = GTK.Przycisk (etykieta = "kliknij tutaj")
samego siebie.przycisk.set_halign (gtk.Wyrównywać.CENTRUM)
samego siebie.przycisk.set_valign (gtk.Wyrównywać.CENTRUM)
samego siebie.przycisk.Connect („kliknięte”, jaźń.on_button_clicked)
samego siebie.skrzynka.pack_start (ja.przycisk, prawda, prawda, 0)
def on_button_clicked (self, widget):
n = powiadom.Powiadomienie.NOWOŚĆ („Simple GTK3 Application”, „Hello World !!")
N.pokazywać()
Win = myWindow ()
wygrać.Connect („Destroy”, GTK.main_quit)
wygrać.Pokaż wszystko()
GTK.główny()

Zrzut ekranu końcowego wyniku.

Powiadomienie komputerowe, które pojawia się po kliknięciu przycisku „kliknij tutaj”:

Wyjaśnienie krok po kroku

Różne instrukcje „importu” w pierwszych kilku wierszach kodu importuj niezbędne moduły wymagane do pracy aplikacji. Te moduły ujawniają wiele klas i funkcji, które można użyć w aplikacji. "Żołnierz amerykański.Wymaganie_wersji ”Instrukcje upewniają się, że tylko wymagana wersja biblioteki jest importowana, aby uniknąć problemów i awarii kompatybilności. W tym przypadku „3.0 ”służy do upewnienia się, że biblioteka GTK3 jest używana w aplikacji, a nie GTK2 lub jakakolwiek inna wersja GTK.

Podobnie jak klasa GTK, klasa powiadomienia jest również importowana poprzez określenie jej wymaganej wersji (0.7 jest najnowszą wersją w momencie pisania tego artykułu). Ta klasa zostanie użyta w dalszej części aplikacji.

Import GI
żołnierz amerykański.wymaganie_wersji („GTK”, „3.0 ")
żołnierz amerykański.wymaganie_wersji („powiadomienie”, „0.7 ')
z GI.Repozytorium import GTK
z GI.Repozytorium Import Powiadom

Następne podklasy „GTK.Klasa okna jako klasa „myWindow”. „GTK.Okno.__init__ ”Metoda inicjuje konstruktor super klasy (GTK.Okno), z którego utworzono podklasę (myWindow). W konstruktorze tytuł aplikacji jest również ustalany jako „Hello World” przy użyciu argumentu „Tytuł”. Domyślna geometria okna aplikacji jest również ustawiana poprzez określenie szerokości i wysokości w metodzie „set_default_size”.

klasa myWindow (GTK.Okno):
def __init __ (ja):
GTK.Okno.__w sobie,)
GTK.Okno.set_default_size (self, 640, 480)

Następnie metoda „init” klasy Powiadomienia służy do zainicjowania biblioteki „libnotify” poprzez dostarczanie tytułu aplikacji. Bez inicjalizacji powiadomienia nie zostaną wysłane i pokazane na pulpicie Linux.

Notyfikować.init („prosta aplikacja GTK3”)

Instrukcja „Box” dodaje pusty kontener układu do głównego okna aplikacji. Ten pojemnik jest jak puste płótno, w którym można zakładać dowolną liczbę widżetów. „Odstępy” odnosi się do przestrzeni między widżetami w jednostkach „pikselowych”.

samego siebie.Box = GTK.Pudełko (odstępy = 6)
samego siebie.Dodaj (ja.skrzynka)

Nowy widżet przycisku „Kliknij tutaj” jest tworzony za pomocą „GTK.Metoda przycisku ”. Następnie jest wyrównany do poziomych i pionowych centrów układu pola nadrzędnego za pomocą metod „set_halign” i „set_valign”. Przycisk jest podłączony do sygnału „klikniętego”, aby za każdym razem naciśnięto przycisk, można wywołać metodę wywołania zwrotnego „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.Metoda Pack_Start ”. Ta metoda przyjmuje cztery argumenty: obiekt widżetu, który ma zostać dodany, boolean do rozszerzenia widżetu, boolean do wypełnienia widżetu i wyściółka między dodanymi i innymi sąsiadującymi widżetami.

samego siebie.Button = GTK.Przycisk (etykieta = "kliknij tutaj")
samego siebie.przycisk.set_halign (gtk.Wyrównywać.CENTRUM)
samego siebie.przycisk.set_valign (gtk.Wyrównywać.CENTRUM)
samego siebie.przycisk.Connect („kliknięte”, jaźń.on_button_clicked)
samego siebie.skrzynka.pack_start (ja.przycisk, prawda, prawda, 0)

Metoda „on_button_click” jest wywoływana za każdym razem, gdy naciska się przycisk „Kliknij tutaj”. Nowe powiadomienie powstaje przy użyciu metody „nowej”, która przyjmuje tytuł i treść powiadomień jako argumenty. To powiadomienie jest następnie wyświetlane na pulpicie za pomocą metody „pokaż”. Możesz także przesunąć instrukcję „nową” w głównym konstruktorze, aby uniknąć odtwarzania powiadomienia za każdym razem, gdy naciśnięty jest przycisk.

def on_button_clicked (self, widget):
n = powiadom.Powiadomienie.NOWOŚĆ („Simple GTK3 Application”, „Hello World !!")
N.pokazywać()

Kilka kolejnych stwierdzeń dotyczy tworzenia, zarządzania i wyświetlania nowego okna aplikacji. Utworzona jest nowa instancja klasy „MyWindow” i jest ona podłączona do sygnału „zniszczenia”, aby zapewnić, że aplikacja jest poprawnie zamknięta, gdy użytkownik zdecyduje się rzucić aplikację, klikając przycisk „X”. Metoda „show_all” wyświetla okno aplikacji na pulpicie Linux. Wreszcie, prowadzona jest główna pętla aplikacji odpowiedzialna za obsługę zdarzeń i sygnałów.

Wniosek

GTK3 i QT to jedne z najpopularniejszych ram GUI używanych do tworzenia aplikacji, które działają natywnie na Linux. Oba te frameworki pozwalają pisać główną logikę w językach C ++ i Python. Nie możesz się pomylić, wybierając którykolwiek z tych zestawów narzędzi do następnego projektu aplikacji Linux.