Krajta

Jak vytvořit jednoduchou aplikaci v Pythonu a GTK3

Jak vytvořit jednoduchou aplikaci v Pythonu a GTK3
Tento článek vysvětlí, jak vytvořit grafickou aplikaci „Hello World“ v systému Linux pomocí programovacího jazyka Python 3 a rámce GTK3 GUI. Všechny ukázky kódu v tomto kurzu jsou testovány pomocí Pythonu 3.8.6 a GTK 3.24.23 na Ubuntu 20.10.

Nainstalujte si nezbytné balíčky

Chcete-li vytvořit aplikaci pomocí Pythonu 3 a GTK3, musíte nainstalovat vazby Pythonu pro knihovny GObject. Toho lze dosáhnout instalací balíčku PyGObject obsaženého v úložištích téměř všech hlavních distribucí Linuxu. Chcete-li nainstalovat tyto závislosti v Ubuntu, můžete použít následující příkaz:

$ sudo apt nainstalovat python3 python3-gi

PyGObject můžete také zkompilovat ze zdrojového kódu dostupného zde.

Úplný kód aplikace Hello World

Úplný ukázkový kód aplikace Hello World napsaný v Pythonu 3 a GTK3 najdete níže. Tato aplikace odešle „Hello World !!”Oznámení na plochu kliknutím na tlačítko.

import gi
gi.require_version ("Gtk", "3.0 ")
gi.require_version ('Upozornit', '0.7 ')
od gi.import úložiště Gtk
od gi.import úložiště Upozornit
třída MyWindow (Gtk.Okno):
def __init __ (vlastní):
Gtk.Okno.__init __ (self, title = "Hello World")
Gtk.Okno.set_default_size (vlastní, 640, 480)
Oznámit.init ("Jednoduchá aplikace GTK3")
já.box = Gtk.Krabice (rozteč = 6)
já.přidat (já.krabice)
já.tlačítko = Gtk.Tlačítko (štítek = "Klikněte sem")
já.knoflík.set_halign (Gtk.Zarovnat.CENTRUM)
já.knoflík.set_valign (Gtk.Zarovnat.CENTRUM)
já.knoflík.připojit ("kliknuto", samo.on_button_clicked)
já.krabice.pack_start (vlastní.tlačítko, True, True, 0)
def on_button_clicked (self, widget):
n = Upozornit.Oznámení.nový („Jednoduchá aplikace GTK3“, „Hello World !!")
n.ukázat()
win = MyWindow ()
vyhrát.připojit ("zničit", Gtk.main_quit)
vyhrát.ukázat vše()
Gtk.hlavní()

Screenshot konečného výsledku.

Oznámení na ploše, které se zobrazí po kliknutí na tlačítko „Klikněte sem“:

Podrobné vysvětlení

Různé příkazy „import“ v prvních několika řádcích kódu importují potřebné moduly potřebné pro fungování aplikace. Tyto moduly vystavují četné třídy a funkce, které lze v aplikaci použít. "Gi.".příkazy require_version ”zajišťují, že se importuje pouze požadovaná verze knihovny, aby se předešlo problémům s kompatibilitou a zhroucení. V tomto případě „3.0 ”se používá k zajištění toho, aby byla v aplikaci použita knihovna GTK3 a nikoli GTK2 nebo jakákoli jiná verze GTK.

Podobně jako třída GTK se také importuje třída Oznámení zadáním požadované verze (0.7 je ta nejnovější verze v době psaní tohoto článku). Tato třída bude použita později v aplikaci.

import gi
gi.require_version ("Gtk", "3.0 ")
gi.require_version ('Upozornit', '0.7 ')
od gi.import úložiště Gtk
od gi.import úložiště Upozornit

Další výrok podtřídy „Gtk.Třída Window jako třída „MyWindow“. „Gtk.Okno.Metoda __init__ ”inicializuje konstruktor super třídy (Gtk.Window), ze které byla vytvořena podtřída (MyWindow). V konstruktoru je název aplikace také nastaven jako „Hello World“ pomocí argumentu „title“. Výchozí geometrie okna aplikace se nastavuje také zadáním šířky a výšky v metodě „set_default_size“.

třída MyWindow (Gtk.Okno):
def __init __ (vlastní):
Gtk.Okno.__init __ (self, title = "Hello World")
Gtk.Okno.set_default_size (vlastní, 640, 480)

Dále se k inicializaci knihovny „libnotify“ zadáním názvu aplikace použije metoda „init“ třídy Notify. Bez inicializace nebudou oznámení odeslána a zobrazena na ploše systému Linux.

Oznámit.init („Jednoduchá aplikace GTK3“)

Příkaz „box“ přidá do hlavního okna aplikace prázdný kontejner rozvržení. Tento kontejner je jako prázdné plátno, kam lze nasadit libovolný počet widgetů. „Mezera“ označuje prostor mezi widgety v „pixelových“ jednotkách.

já.box = Gtk.Krabice (rozteč = 6)
já.přidat (já.krabice)

Pomocí tlačítka „Gtk“ je vytvořen nový widget s tlačítkem „Klikněte zde“.Tlačítko “. Poté je pomocí metod „set_halign“ a „set_valign“ zarovnán do vodorovných a svislých středů rozložení nadřazeného pole. Tlačítko je připojeno k signálu „kliknutí“, takže kdykoli je tlačítko stisknuto, lze vyvolat metodu zpětného volání „on_button_clicked“. Nakonec se widget tlačítka vloží zleva podél vodorovné osy do rozvržení pole pomocí pole „box“.pack_start ”metoda. Tato metoda má čtyři argumenty: objekt widgetu, který má být přidán, boolean pro rozšíření widgetu, boolean pro vyplnění widgetu a odsazení mezi přidanými a dalšími sousedními widgety.

já.tlačítko = Gtk.Tlačítko (štítek = "Klikněte sem")
já.knoflík.set_halign (Gtk.Zarovnat.CENTRUM)
já.knoflík.set_valign (Gtk.Zarovnat.CENTRUM)
já.knoflík.připojit ("kliknuto", samo.on_button_clicked)
já.krabice.pack_start (vlastní.tlačítko, True, True, 0)

Metoda „on_button_click“ je vyvolána vždy, když je stisknuto tlačítko „Click Here“. Nové oznámení se vytváří pomocí metody „new“, která bere nadpis a obsah oznámení jako argumenty. Toto oznámení se poté zobrazí na ploše pomocí metody „zobrazit“. Můžete také přesunout příkaz „new“ v hlavním konstruktoru, abyste zabránili opětovnému vytvoření oznámení při každém stisknutí tlačítka.

def on_button_clicked (self, widget):
n = Upozornit.Oznámení.nový („Jednoduchá aplikace GTK3“, „Hello World !!")
n.ukázat()

V příštích několika prohlášeních jde o vytvoření, správu a zobrazení nového okna aplikace. Je vytvořena nová instance třídy „MyWindow“, která je připojena k signálu „zničit“, aby bylo zajištěno správné ukončení aplikace, kdykoli se uživatel rozhodne aplikaci ukončit kliknutím na tlačítko „x“. Metoda „show_all“ zobrazí okno aplikace na ploše systému Linux. Nakonec je spuštěna hlavní aplikační smyčka odpovědná za zpracování událostí a signálů.

Závěr

GTK3 a Qt jsou některé z nejpopulárnějších rámců grafického uživatelského rozhraní používaných k vytváření aplikací, které nativně běží v systému Linux. Oba tyto rámce umožňují psát hlavní logiku v jazycích C ++ a Python. Výběrem některé z těchto sad nástrojů pro svůj další projekt aplikace Linux se nemůžete pokazit.

Hry Nejlepší linuxové distribuce pro hraní her v roce 2021
Nejlepší linuxové distribuce pro hraní her v roce 2021
Operační systém Linux má za sebou dlouhou cestu od svého původního, jednoduchého vzhledu založeného na serveru. Tento OS se v posledních letech nesmír...
Hry Jak zachytit a streamovat vaši herní relaci v systému Linux
Jak zachytit a streamovat vaši herní relaci v systému Linux
V minulosti bylo hraní her považováno pouze za koníček, ale postupem času došlo v herním průmyslu k obrovskému nárůstu z hlediska technologie a počtu ...
Hry Nejlepší hry pro ruční sledování
Nejlepší hry pro ruční sledování
Oculus Quest nedávno představil skvělou myšlenku ručního sledování bez ovladačů. S neustále se zvyšujícím počtem her a aktivit, které provádějí podpor...