PyGObject ulanyp Linux iş stolunyň aşagynda GUI programmalaryny nädip döretmeli - 1-nji bölüm


Linux-da programmalar döretmek dürli usullar arkaly amala aşyrylyp bilner, ýöne çäkli usullar bar, şonuň üçin iň ýönekeý we iň amatly programma dillerini we kitaphanalaryny ulanyp, Linux-yň aşagynda programmalar döretmek barada gysgaça göz aýlarys\PyGObject diýilýän Python programma dili bolan GTK + kitaphanasyny ulanyp iş stoly.

PyGObject, Python ýaly programma dilleri üçin hökmany döretmek üçin GObject Introspection ulanýar, PyGObject PyGTK-dan geljek nesil, PyGObject=Python + GTK3 diýip bilersiňiz.

Bu gün, GTK + kitaphanasyny we PyGobject dilini ulanyp, Linux iş stolunyň aşagynda GUI (Grafiki ulanyjy interfeýsi) programmalaryny döretmek barada bir seriýa başlamakçy, seriýa aşakdaky temalary öz içine alar:

Ilki bilen Python-da esasy bilimleriňiz bolmaly; Python gaty döwrebap we programmirleme dilini ulanmak aňsat. Python-dan peýdalanyp, dünýäde iň meşhur programmirleme dilleriniň biri, köp ajaýyp programmalary we gurallary döredip bilersiňiz. Codeacademy.com-daky ýaly mugt kurslary alyp bilersiňiz ýa-da Python hakda käbir kitaplary okap bilersiňiz:

GTK + iş stoly programmalary üçin grafiki ulanyjy interfeýslerini döretmek üçin açyk çeşme platformasy gurallar toplumy, ilkinji gezek 1998-nji ýylda GIMP üçin GUI gurallar toplumy hökmünde başlandy, soň bolsa başga-da köp programmalarda ulanyldy we tiz wagtdan GUI döretmek üçin iň meşhur kitaphanalaryň birine öwrüldi. GTK + LGPL ygtyýarnamasy boýunça goýberilýär.

Linux-yň aşagynda GUI programmalaryny döretmek

GTK + & Python ulanyp, programmalary döretmegiň 2 usuly bar:

  1. Diňe kod ulanyp grafiki interfeýsi ýazmak.
  2. GTK + interfeýslerini aňsatlyk bilen dizaýn etmek üçin RAD guraly bolan\ Glade programmasyny ulanyp grafiki interfeýsi dizaýn etmek, Glade GUI-ni XML faýly hökmünde döredýär, ony gurmak üçin islendik programma dili bilen ulanyp bolýar. GUI, GUI-iň XML faýlyny eksport edenimizden soň, XML faýlyny isleýän işlerimizi ýerine ýetirmek üçin programmamyz bilen baglanyşdyryp bileris.

Iki ýoly hem gysgaça düşündireris.

Diňe kod ulanyp GUI ýazmak, hiç bir programmistiň we gaty köp wagt ýitirmek üçin birneme kyn bolup biler, ýöne ony ulanmak bilen, Glade ýaly käbir gurallary ulanyp döredenlerimizden has köp programmalarymyz üçin gaty amatly GUI döredip bileris.

Aşakdaky mysaly alalyň.

#!/usr/bin/python
# -*- coding: utf-8 -*-

from gi.repository import Gtk

class ourwindow(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="My Hello World Program")
        Gtk.Window.set_default_size(self, 400,325)
        Gtk.Window.set_position(self, Gtk.WindowPosition.CENTER)

        button1 = Gtk.Button("Hello, World!")
        button1.connect("clicked", self.whenbutton1_clicked)

        self.add(button1)
        
    def whenbutton1_clicked(self, button):
      print "Hello, World!"

window = ourwindow()        
window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main()

Aboveokardaky kody göçüriň,\ test.py faýlyna goýuň we test.py faýlynda 755 rugsady belläň we faýly soň\ ./test.py ulanyp işlediň. ”, alarsyňyz.

# nano test.py
# chmod 755 test.py
# ./test.py

Düwmä basyp, terminalda çap edilen\ Salam, Dünýä! sözlemini görýärsiňiz:

Kody jikme-jik düşündirip bereýin.

  1. #!/usr/bin/python : Python terjimeçisi üçin esasy ýol (köplenç 2.7 wersiýa), bu setir her Python faýlynda birinji setir bolmaly.
  2. # - * - kodlaşdyrma: utf-8 - * - : Bu ýerde faýl üçin deslapky kodlamagy kesgitledik, iňlis däl dilleri goldamak isleseňiz UTF-8 iň gowusy, gidiň şeýle.
  3. gi.repository import Gtk : Ine, programmamyzda ulanmak üçin GTK 3 kitaphanasyny import edýäris.
  4. “Window” synpymyz (Gtk.Window): Bu ýerde\“biziň gözümiz” diýlip atlandyrylýan täze synp döredýäris, synp obýektiniň görnüşini\Gtk.Window -a hem düzýäris.
  5. def __init __ (öz) : Täze zat ýok, biz bu ýerde esasy penjire böleklerini kesgitleýäris.
  6. Gtk.Window .__ init __ penjire, isleseňiz ady üýtgedip bilersiňiz.
      • \Gtk.WindowPosition.CENTER parametrini ulanyp merkeze, isleseňiz, syçanjygyň görkezijisiniň penjiresini açmak üçin\Gtk.WindowPosition.MOUSE diýip üýtgedip bilersiňiz.
      • düwme1=Gtk düwmesi (Salam, Dünýä!) : Täze Gtk düwmesini döretdik we oňa\düwme1 diýdik, düwmäniň asyl teksti\ Salam, Dünýä! ”, Isleseňiz islendik Gtk widjetini döredip bilersiňiz.
      • button1.connect (basyldy, öz-özi\haçan düwme1_ basylan hereketi işjeňleşdirilýär.
      • self.add (düwme1) : Gtk gurallarymyzyň peýda bolmagyny islesek, olary adaty penjire goşmalydyrys, bu ýönekeý setir penjire\düwme1 widjetini goşýar, etmek gaty zerur.
        • \(öz, düwme) parametri esasy signalyň obýekt görnüşini kesgitlemek üçin möhümdir.
        • Salam, Dünýä! çap et : Bu ýerde has köp düşündirmek hökman däl.
            • programma penjiresini awtomatiki ýapanymyzdan soň ähli widjetleri ýok etmek üçin möhümdir.
            • windows.show_all() : Penjiräni görkezmek.
            • Gtk.main() : Gtk kitaphanasyny işletmek.

Bu aňsat dälmi? Käbir uly programmalary döretmek islesek gaty amatly. Diňe kod usuly bilen GTK + interfeýslerini döretmek barada has giňişleýin maglumat üçin resmi resminama web sahypasyna girip bilersiňiz:

Python GTK3 okuw gollanmalary

Makalanyň başynda aýdyşym ýaly, Glade programmalarymyz üçin zerur interfeýsleri döretmek üçin gaty aňsat gural, işläp düzüjileriň arasynda gaty meşhur we ony ulanyp köp sanly amaly interfeýs döredildi. Bu ýol\Çalt programmalary ösdürmek diýilýär.

Deladan/Ubuntu/Mint işinde ulanyp başlamak üçin Glade gurmaly:

$ sudo apt­-get install glade

RedHat/Fedora/CentOS-da işlediň:

# yum install glade

Programmany göçürip alanyňyzdan we işledeniňizden soň, çep tarapda bar bolan Gtk gurallaryny görersiňiz, täze penjire döretmek üçin\ penjire widjetine basyň.

Täze boş penjiräniň döredilendigini görersiňiz.

Indi oňa käbir gurallary goşup bilersiňiz, çep gurallar panelinde\ düwmesi widjetine basyp, penjire düwmesini goşmak üçin boş penjire basyp bilersiňiz.

Düwme ID-siniň\ düwme1 bolandygyny görersiňiz, indi sag gurallar panelindäki Signallar goýmasyna serediň we\ basylan signalyny gözläň we giriň\aşagyndaky düwme1_ basyldy .

GUI-ni döredenimizden soň, eksport edeliň.\ Faýl menýusyna basyň we\ Saklamak saýlaň, faýly öý bukjasynda\ myprogram.glade We çykyň.

Indi täze\ test.py faýly dörediň we içindäki aşakdaky kody giriziň.

#!/usr/bin/python
# -*- coding: utf-8 -*-

from gi.repository import Gtk

class Handler:
    def button_1clicked(self, button):
      print "Hello, World!"

builder = Gtk.Builder()
builder.add_from_file("myprogram.glade")
builder.connect_signals(Handler())

ournewbutton = builder.get_object("button1")
ournewbutton.set_label("Hello, World!")

window = builder.get_object("window1")

window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main()

Faýly ýazdyryň, öňküsi ýaly 755 rugsat beriň we\ ./test.py ulanyp işlediň we size aljak zat.

# nano test.py
# chmod 755 test.py
# ./test.py

Düwmä basyň we\ Salam, Dünýä! sözleminiň terminalda çap edilendigini görersiňiz.

Indi täze zatlary düşündireliň:

  1. synp işleýjisi : Ine, biz GUI üçin döredýän hereketleriň we signallaryň kesgitlemelerini öz içine alýan\Handler atly synp döredýäris.
  2. gurluşykçy=Gtk.Builder() : Gtk.Builder widjeti bolan\gurluşykçy atly täze global üýtgeýjini döretdik, bu .glade faýlyny import etmek üçin möhümdir.
  3. builder.add_from_file (myprogram.glade) : Bu ýerde programmamyz üçin adaty GUI hökmünde ulanmak üçin\myprogram.glade faýlyny import edýäris.
    • programmany işledýäris.
    • ournewbutton=builder.get_object (button1) : Indi\düwme1 obýektini .glade faýlyndan import edýäris, ony global üýtgeýjä hem geçirýäris\ ournewbutton ”programmamyzda soň ulanmak üçin.
    • ournewbutton.set_label (“Salam, Dünýä!”) : Dymmak düwmesiniň tekstini\Salam, Dünýä! bellemek üçin\set.label usulyny ulandyk. sözlem.
    • windows=builder.get_object (windows1) : Bu ýerde programmada görkezmek üçin .glade faýlyndan\windows1 obýektine jaň etdik.

Ine! Linux-yň aşagynda ilkinji programmaňyzy üstünlikli döretdiňiz!

Elbetde, bir zat edýän hakyky programma döretmek üçin edilmeli has çylşyrymly işler bar, şonuň üçin GTK + resminamalaryna we GObject API-de göz aýlamagy maslahat berýärin:

  1. GTK + salgylanma gollanmasy
  2. Python GObject API salgylanmasy
  3. PyGObject salgylanmasy

Linux iş stolunyň aşagynda haýsydyr bir programma düzdüňizmi? Muny etmek üçin haýsy programmirleme dili we gurallary ulanyldy? Python & GTK 3 ulanyp, programmalar döretmek barada näme pikir edýärsiňiz?


Rightshli hukuklar goralandyr. © Linux-Console.net • 2019-2024