Telepítse a szükséges csomagokat
Alkalmazás Python 3 és GTK3 használatával történő létrehozásához telepítenie kell a Python-összerendeléseket a GObject könyvtárakhoz. Ez úgy valósítható meg, hogy telepíti a PyGObject csomagot, amely szinte minden nagyobb Linux disztribúció tárházában található. Ezeknek a függőségeknek az Ubuntuban történő telepítéséhez használja az alábbi parancsot:
$ sudo apt install python3 python3-giA PyGObject-et az itt elérhető forráskódból is lefordíthatja.
A Hello World alkalmazás teljes kódja
A Hello World alkalmazás teljes kódmintája, amely Python 3-ban és GTK3-ban íródott, alább található. Ez az alkalmazás egy „Hello World !!”Értesítés az asztalra egy gombnyomásra.
import giGI.igényel_version ("Gtk", "3.0 ")
GI.required_version ('Értesítés', '0.7 ')
a gi-től.adattár import Gtk
a gi-től.adattár importálása Értesítés
osztály MyWindow (Gtk.Ablak):
def __init __ (én):
Gtk.Ablak.__init __ (saját, cím = "Hello World")
Gtk.Ablak.set_default_size (self, 640, 480)
Értesítés.init ("Egyszerű GTK3 alkalmazás")
maga.mező = Gtk.Doboz (távolság = 6)
maga.add (self.doboz)
maga.gomb = Gtk.Gomb (címke = "Kattintson ide")
maga.gomb.set_halign (Gtk.Igazítsa.KÖZPONT)
maga.gomb.set_valign (Gtk.Igazítsa.KÖZPONT)
maga.gomb.csatlakozni ("kattintott", önálló.on_button_clicked)
maga.doboz.pack_start (self.gomb, True, True, 0)
def on_button_clicked (saját, widget):
n = Értesítés.Értesítés.új ("Simple GTK3 Application", "Hello World !!")
n.előadás()
win = MyWindow ()
győzelem.connect ("megsemmisíteni", Gtk.main_quit)
győzelem.Mutasd az összeset()
Gtk.fő()
Pillanatkép a végeredményről.
A „Kattintson ide” gombra kattintva érkező asztali értesítés:
Lépésről-lépésre magyarázat
Különböző „import” utasítások a kód első néhány sorában importálják az alkalmazás működéséhez szükséges modulokat. Ezek a modulok számos osztályt és funkciót tárnak fel, amelyek felhasználhatók az alkalmazáson belül. "GI.demand_version ”utasítások biztosítják, hogy csak a könyvtár szükséges verzióját importálják az kompatibilitási problémák és összeomlások elkerülése érdekében. Ebben az esetben „3.0 ”-ot használunk annak biztosítására, hogy a GTK3 könyvtárat használják az alkalmazásban, és ne a GTK2-t vagy a GTK bármely más verzióját.
A GTK osztályhoz hasonlóan a Notify osztály is importálódik a szükséges verziójának megadásával (0.7 a cikk írásakor a legújabb verzió). Ezt az osztályt később az alkalmazásban fogjuk használni.
import giGI.igényel_version ("Gtk", "3.0 ")
GI.required_version ('Értesítés', '0.7 ')
a gi-től.adattár import Gtk
a gi-től.adattár importálása Értesítés
A következő nyilatkozat a „Gtk.Ablak ”osztály„ MyWindow ”osztályként. A „Gtk.Ablak.__init__ ”módszer inicializálja a szuper osztály konstruktorát (Gtk.Ablak), amelyből létrehoztak egy alosztályt (MyWindow). A konstruktorban az alkalmazás címe szintén „Hello World” -ként van beállítva a „title” argumentummal. Az alkalmazásablak alapértelmezett geometriáját a szélesség és a magasság megadásával is megadhatja a „set_default_size” módszerben.
osztály MyWindow (Gtk.Ablak):def __init __ (én):
Gtk.Ablak.__init __ (saját, cím = "Hello World")
Gtk.Ablak.set_default_size (self, 640, 480)
Ezután a Notify osztály „init” módszerével inicializáljuk a „libnotify” könyvtárat egy alkalmazás címének megadásával. Inicializálás nélkül az értesítéseket nem küldjük és nem jelenítjük meg a Linux asztalon.
Értesítés.init ("Egyszerű GTK3 alkalmazás")A „box” utasítás egy üres elrendezési tárolót ad hozzá az alkalmazás főablakához. Ez a tároló olyan, mint egy üres vászon, ahová tetszőleges számú widgetet lehet feltenni. A „Spacing” a widgetek közötti helyet jelenti a „pixel” egységekben.
maga.mező = Gtk.Doboz (távolság = 6)maga.add (self.doboz)
A „Gtk.Gomb ”módszer. Ezután a „set_halign” és a „set_valign” módszerekkel igazodik a szülődoboz elrendezésének vízszintes és függőleges középpontjához. A gomb a „kattintott” jelhez csatlakozik, így amikor a gombot megnyomja, meghívható az „on_button_clicked” visszahívási módszer. Végül a gomb widgetet a vízszintes tengely mentén balról a doboz elrendezésére kell beilleszteni a „doboz segítségével.pack_start ”módszer. Ennek a módszernek négy argumentuma van: a hozzáadandó widget-objektum, logikai érték a widget kibővítéséhez, logikai érték a widget kitöltéséhez, valamint a hozzáadott és más szomszédos widgetek közötti párnázás.
maga.gomb = Gtk.Gomb (címke = "Kattintson ide")maga.gomb.set_halign (Gtk.Igazítsa.KÖZPONT)
maga.gomb.set_valign (Gtk.Igazítsa.KÖZPONT)
maga.gomb.csatlakozni ("kattintott", önálló.on_button_clicked)
maga.doboz.pack_start (self.gomb, True, True, 0)
Az „on_button_click” metódust a „Kattintson ide” gomb megnyomásakor hívják meg. Új értesítés jön létre az „új” módszerrel, amely az értesítés címét és tartalmát veszi érvként. Ez az értesítés azután megjelenik az asztalon a „show” módszerrel. Az „új” utasítás a fő konstruktorban is áthelyezhető, hogy elkerülje az értesítés újbóli létrehozását, amikor a gombot megnyomja.
def on_button_clicked (saját, widget):n = Értesítés.Értesítés.új ("Simple GTK3 Application", "Hello World !!")
n.előadás()
A következő állítások egy új alkalmazásablak létrehozásáról, kezeléséről és megjelenítéséről szólnak. Létrejön egy új „MyWindow” osztálypéldány, és a „megsemmisítés” jelhez csatlakozik annak biztosítása érdekében, hogy az alkalmazás megfelelően bezáruljon, amikor a felhasználó az „x” gombra kattintva úgy dönt, hogy kilép az alkalmazásból. A „show_all” módszer megjeleníti az alkalmazásablakot a Linux asztalon. Végül lefut az események és jelek kezeléséért felelős fő alkalmazáskör.
Következtetés
A GTK3 és a Qt a legnépszerűbb GUI keretrendszerek, amelyeket natívan futó alkalmazások létrehozására használnak Linuxon. Mindkét keret lehetővé teszi, hogy fő logikát írjon C ++ és Python nyelvre. Nem tévedhet el, ha a következő Linux-alkalmazás projektjéhez bármelyiket kiválasztja.