Python

Kuidas luua Pythonis ja GTK3-s lihtsat rakendust

Kuidas luua Pythonis ja GTK3-s lihtsat rakendust
Selles artiklis selgitatakse, kuidas luua Linuxis graafiline rakendus "Hello World", kasutades Python 3 programmeerimiskeelt ja GTK3 GUI raamistikku. Kõiki õpetuse koodinäiteid testitakse Python 3-ga.8.6 ja GTK 3.24.23 Ubuntu 20-s.10.

Installige vajalikud paketid

Rakenduse loomiseks Python 3 ja GTK3 abil peate installima PyOoni köited GObjecti teekide jaoks. Seda saab teha, installides PyGObjecti paketi, mis sisaldub peaaegu kõigi suuremate Linuxi distributsioonide hoidlates. Nende sõltuvuste installimiseks Ubuntu saate kasutada järgmist käsku:

$ sudo apt installige python3 python3-gi

PyGObjecti saate kompileerida ka siin saadaval olevast lähtekoodist.

Rakenduse Hello World täielik kood

Allpool leiate Python 3 ja GTK3-sse kirjutatud rakenduse Hello World täieliku koodinäidise. See rakendus saadab teate „Tere maailm !!”Teade töölauale ühe nupuvajutusega.

import gi
gi.Nõua_version ("Gtk", "3.0 ")
gi.Require_version ('Teata', '0.7 ')
gi-st.hoidla import Gtk
gi-st.hoidla import Teata
klass MyWindow (GTK.Aken):
def __init __ (ise):
Gtk.Aken.__init __ (ise, pealkiri = "Tere maailm")
Gtk.Aken.set_default_size (ise, 640, 480)
Teata.init ("Lihtne GTK3 rakendus")
ise.kast = Gtk.Kast (vahe = 6)
ise.lisa (ise.kast)
ise.nupp = GTK.Nupp (silt = "Klõpsake siin")
ise.nuppu.set_halign (GTK.Joondage.KESKUS)
ise.nuppu.set_valign (GTK.Joondage.KESKUS)
ise.nuppu.ühenda ("klõpsatud", ise.on_button_clicked)
ise.kasti.pack_start (ise.nupp, True, True, 0)
def on_button_clicked (ise, vidin):
n = Teata.Teavitamine.uus ("Lihtne GTK3 rakendus", "Tere maailm !!")
n.näita ()
win = MyWindow ()
võita.ühendama ("hävitama", Gtk.main_quit)
võita.Näita kõike()
Gtk.peamine ()

Ekraanipilt lõpptulemusest.

Kui klõpsate nupul „Vajuta siia”, saabub töölaua teade:

Järk-järguline selgitus

Erinevad „impordi” laused koodi esimestel ridadel impordivad rakenduse toimimiseks vajalikke mooduleid. Need moodulid paljastavad arvukad klassid ja funktsioonid, mida saab rakenduses kasutada. "Gi.nõue_version ”-lausetega tagatakse, et ühilduvusprobleemide ja krahhide vältimiseks imporditakse ainult vajalik teegi versioon. Sel juhul „3.0 ”kasutatakse veendumaks, et rakenduses kasutatakse GTK3 teeki, mitte GTK2 või mõnda muud GTK versiooni.

Sarnaselt klassile GTK imporditakse ka Notify klass, määrates selle nõutava versiooni (0.7 on viimane artikkel selle artikli kirjutamise ajal). Seda klassi kasutatakse hiljem rakenduses.

import gi
gi.Nõua_version ("Gtk", "3.0 ")
gi.Require_version ('Teata', '0.7 ')
gi-st.hoidla import Gtk
gi-st.hoidla import Teata

Järgmine väide alamklasse „Gtk.Aken ”klass kui klass„ MyWindow ”. „Gtk.Aken.__init__ ”meetod lähtestab superklassi konstruktori (Gtk.Window), millest loodi alamklass (MyWindow). Konstruktoris määratakse rakenduse pealkirjaks ka argument "pealkiri" "Tere maailm". Rakendusakna vaikigeomeetria määratakse ka meetodi „set_default_size” laiuse ja kõrguse määramisega.

klass MyWindow (GTK.Aken):
def __init __ (ise):
Gtk.Aken.__init __ (ise, pealkiri = "Tere maailm")
Gtk.Aken.set_default_size (ise, 640, 480)

Järgmisena kasutatakse klassi Notify meetodit init, et initsialiseerida teek libnotify, esitades rakenduse pealkirja. Ilma lähtestamiseta ei saadeta teateid ega kuvata Linuxi töölaual.

Teata.init ("Lihtne GTK3 rakendus")

Lause „box” lisab rakenduse peaaknasse tühja paigutusekonteineri. See konteiner on nagu tühi lõuend, kuhu saab panna suvalise arvu vidinaid. „Tühik” tähistab vidinate vahelist ruumi piksliühikutes.

ise.kast = Gtk.Kast (vahe = 6)
ise.lisa (ise.kast)

Uus nupuvidin „Click Here“ luuakse rakenduse „Gtk.Nupp ”meetod. Seejärel viiakse see vanakasti paigutuse horisontaalsete ja vertikaalsete keskustega, kasutades meetodeid „set_halign” ja „set_valign”. Nupp on ühendatud klõpsatud signaaliga, nii et alati, kui nuppu vajutatakse, saab kasutada tagasihelistusmeetodit „on_button_clicked”. Lõpuks sisestatakse nupu vidin vasakult mööda horisontaaltelge kasti paigutusse, kasutades kasti „.pack_start ”meetod. Sellel meetodil on neli argumenti: lisatav vidinaobjekt, boolean vidina laiendamiseks, boolean vidina täitmiseks ning täidis lisatud ja teiste külgnevate vidinate vahel.

ise.nupp = GTK.Nupp (silt = "Klõpsake siin")
ise.nuppu.set_halign (GTK.Joondage.KESKUS)
ise.nuppu.set_valign (GTK.Joondage.KESKUS)
ise.nuppu.ühenda ("klõpsatud", ise.on_button_clicked)
ise.kasti.pack_start (ise.nupp, True, True, 0)

Meetodile „on_button_click” pöördutakse alati, kui vajutatakse nuppu „Vajuta siia”. Uus teade luuakse uue meetodi abil, mille argumendiks on teate pealkiri ja sisu. Seejärel kuvatakse see teade töölaual, kasutades meetodit "näita". Võite ka uue konstruktsiooni teisaldada peakonstruktoris, et vältida nupu vajutamisel teate uuesti loomist.

def on_button_clicked (ise, vidin):
n = Teata.Teavitamine.uus ("Lihtne GTK3 rakendus", "Tere maailm !!")
n.näita ()

Järgmised avaldused käsitlevad uue rakenduseakna loomist, haldamist ja kuvamist. Luuakse uus klassi „MyWindow” eksemplar ja see on ühendatud signaali „hävitada” tagamiseks, et rakendus oleks korralikult suletud, kui kasutaja otsustab rakendusest sulgeda, klõpsates nupul „x”. Meetod “show_all” kuvab teie Linuxi töölaual rakenduse akna. Lõpuks käivitatakse peamine rakenduste silmus, mis vastutab sündmuste ja signaalide käitlemise eest.

Järeldus

GTK3 ja Qt on ühed kõige populaarsemad graafilise kasutajaliidese raamistikud, mida kasutatakse Linuxis loomulikult töötavate rakenduste loomiseks. Mõlemad raamistikud võimaldavad teil kirjutada põhiloogikat C ++ ja Pythoni keeltes. Te ei saa valesti minna, valides järgmise Linuxi rakenduse projekti jaoks mõne neist tööriistakomplektidest.

Tasuta ja avatud lähtekoodiga mängumootorid Linuxi mängude arendamiseks
See artikkel hõlmab loetelu tasuta ja avatud lähtekoodiga mängumootoritest, mida saab kasutada 2D- ja 3D-mängude arendamiseks Linuxis. Selliseid mängu...
Tomb Raider for Linuxi õpetus
Shadow of the Tomb Raider on kaheteistkümnes täiendus seeria Tomb Raider - tegevus- ja seiklusmängude frantsiisile, mille on loonud Eidos Montreal. Ni...
Kuidas FPS-i suurendada Linuxis?
FPS tähistab Kaadrit sekundis. FPS-i ülesanne on mõõta kaadrisagedust video taasesitamisel või mängude esitamisel. Lihtsamalt öeldes nimetatakse iga s...