Yadda ake Ƙirƙirar aikace-aikacen GUI ƙarƙashin Linux Desktop Ta amfani da PyGObject - Part 1


Ƙirƙirar aikace-aikace akan Linux ana iya yin ta ta hanyoyi daban-daban, amma akwai ƙayyadaddun hanyoyin yin aiki, don haka amfani da yarukan shirye-shirye da ɗakunan karatu mafi sauƙi kuma mafi aiki, shi ya sa za mu yi saurin duban ƙirƙirar aikace-aikace a ƙarƙashin Linux. tebur ta amfani da ɗakin karatu na GTK+ tare da yaren shirye-shiryen Python wanda ake kira \PyGObject.

PyGObject yana amfani da GObject Introspection don ƙirƙirar ɗaure don shirye-shiryen harsuna kamar Python, PyGObject shine ƙarni na gaba daga PyGTK, zaku iya cewa PyGObject = Python + GTK3.

A yau, za mu fara jerin abubuwa game da ƙirƙirar aikace-aikacen GUI (Masu amfani da Zane) a ƙarƙashin tebur ɗin Linux ta amfani da ɗakin karatu na GTK+ da harshen PyGobject, jerin za su rufe batutuwa masu zuwa:

Da farko, dole ne ku kasance da ɗan ilimin asali a cikin Python; Python zamani ne kuma mai sauƙin amfani da yaren shirye-shirye. Yana ɗaya daga cikin shahararrun harsunan shirye-shirye a duniya, ta amfani da Python, za ku iya ƙirƙirar manyan aikace-aikace & kayan aiki da yawa. Kuna iya ɗaukar wasu darussa kyauta kamar waɗanda ke codeacademy.com ko kuna iya karanta wasu littattafai game da Python a:

GTK+ kayan aiki ne na buɗaɗɗen tushen giciye don ƙirƙirar mu'amalar masu amfani da hoto don aikace-aikacen tebur, an fara shi ne a cikin 1998 a matsayin kayan aikin GUI don GIMP, daga baya, an yi amfani da shi a wasu aikace-aikace da yawa kuma ba da daɗewa ba ya zama ɗaya daga cikin shahararrun ɗakunan karatu don ƙirƙirar GUIs. An saki GTK+ ƙarƙashin lasisin LGPL.

Ƙirƙirar aikace-aikacen GUI A ƙarƙashin Linux

Akwai hanyoyi guda biyu don ƙirƙirar aikace-aikacen ta amfani da GTK+ & Python:

  1. Rubutun mu'amalar hoto ta amfani da lamba kawai.
  2. Shirya ƙirar ƙirar hoto ta amfani da shirin \Glade; wanda shine kayan aikin RAD don tsara mu'amalar GTK+ cikin sauƙi, Glade yana haifar da GUI azaman fayil na XML wanda za'a iya amfani dashi tare da kowane yaren shirye-shirye don ginawa. GUI, bayan fitar da fayil ɗin XML na GUI, za mu iya haɗa fayil ɗin XML tare da shirin mu don yin ayyukan da muke so.

Za mu bayyana hanyoyi biyu a takaice.

Rubuta GUI ta amfani da lambar kawai na iya zama ɗan wahala ga masu shirye-shiryen noob da ɓata lokaci sosai, amma amfani da shi, zamu iya ƙirƙirar GUI masu aiki sosai don shirye-shiryen mu, fiye da waɗanda muke ƙirƙira ta amfani da wasu kayan aikin kamar Glade.

Bari mu ɗauki misali na gaba.

#!/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()

Kwafi lambar da ke sama, manna ta a cikin fayil ɗin \test.py kuma saita izini 755 akan fayil ɗin test.py kuma gudanar da fayil ɗin daga baya ta amfani da \./test.py”, abin da za ku samu ke nan.

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

Ta danna maɓallin, za ku ga jimlar \Hello, Duniya! da aka buga a cikin tashar:

Bari in yi bayanin lambar a cikin cikakken bayani.

  1. #!/usr/bin/python: Tsohuwar hanyar mai fassarar Python (version 2.7 a mafi yawan lokuta), wannan layin dole ne ya zama layin farko a kowane fayil na Python.
  2. # -*- codeing: utf-8 -*-: Anan mun saita tsoho codeing na fayil ɗin, UTF-8 shine mafi kyawun idan kuna son tallafawa yarukan da ba na Ingilishi ba, bar kamar haka.
  3. daga gi.repository import Gtk: Anan muna shigo da ɗakin karatu na GTK 3 don amfani da shi a cikin shirinmu.
  4. Class ourwindow(Gtk.Window): Anan muna ƙirƙirar sabon aji, wanda ake kira \tagar mu, muna kuma saita nau'in abun ajin zuwa Gtk.Window.
  5. def __init__(self): Babu wani sabon abu, muna bayyana ainihin abubuwan da aka gyara taga anan.
  6. Gtk.Window.__init__(self, title=”My Hello World Program”): Muna amfani da wannan layin don saita taken \My Hello World Program zuwa tagarmu taga, zaku iya canza take idan kuna so.
  7. Gtk.Window.set_default_size(kai, 400,325): Ba na tsammanin wannan layin yana buƙatar bayani, a nan muna saita tsoho da faɗi da tsayi don taganmu.
  8. Gtk.Window.set_position(kai, Gtk.WindowPosition.CENTER): Amfani da wannan layin, za mu iya saita tsoho matsayi na taga, a wannan yanayin, mu saita shi. zuwa cibiyar ta amfani da ma'aunin Gtk.WindowPosition.CENTER, idan kuna so, zaku iya canza shi zuwa Gtk.WindowPosition.MOUSE don buɗe taga akan matsayi na linzamin kwamfuta.
  9. button1 = Gtk.Button (Hello, Duniya!): Mun ƙirƙiri sabon Gtk.Button, kuma mun kira shi \button1, tsoho rubutun don maɓallin shine\Sannu, Duniya!, kuna iya ƙirƙirar kowane mai nuna dama cikin sauƙi na Gtk idan kuna so.
  10. button1.connect(danna, self.whenbutton1_clicked): Anan muna danganta siginar \latsa tare da aikin \lokacin da aka danna, ta yadda idan aka danna maballin, an kunna aikin \lokacin da aka danna.
  11. self.add(button1): Idan muna son bayyana widget din mu na Gtk, dole ne mu saka su a cikin tsohuwar taga, wannan layin mai sauki yana kara widget din \button1 a cikin taga, ya zama dole a yi wannan.
  12. def whenbutton1_clicked(self, button): Yanzu muna ma'anar aikin \lokacin da aka danna anan, muna ma'anar abin da zai faru idan aka danna widget din button1, \(kai, maɓalli) yana da mahimmanci don tantance nau'in abu na iyaye.
  13. buga Sannu, Duniya!: Ba sai na yi karin bayani a nan ba.
  14. taga = taga mu(): Dole ne mu ƙirƙiri sabon canjin duniya kuma mu saita shi zuwa ajin mu ta taga() domin mu iya kiranta daga baya ta amfani da GTK+ library.
  15. window.connect(share-event, Gtk.main_quit): Yanzu muna haɗa siginar share-event tare da aikin Gtk.main_quit, wannan shine yana da mahimmanci don share duk widgets bayan mun rufe taga shirin mu ta atomatik.
  16. window.show_all(): Nuna taga.
  17. Gtk.main(): Gudanar da ɗakin karatu na Gtk.

Shi ke nan, ba sauki ba? Kuma yana aiki sosai idan muna son ƙirƙirar wasu manyan aikace-aikace. Don ƙarin bayani game da ƙirƙirar musaya na GTK+ ta amfani da hanyar lamba-kawai, kuna iya ziyartar gidan yanar gizon takaddun shaida a:

Python GTK3 Koyawa

Kamar yadda na fada a farkon labarin, Glade kayan aiki ne mai sauƙi don ƙirƙirar hanyoyin da muke buƙata don shirye-shiryenmu, ya shahara sosai tsakanin masu haɓakawa kuma an ƙirƙiri manyan mu'amalar aikace-aikacen da yawa ta amfani da shi. Ana kiran wannan hanyar \Ci gaban aikace-aikacen gaggawa.

Dole ne ku shigar da Glade don fara amfani da shi, akan gudu Debian/Ubuntu/Mint:

$ sudo apt­-get install glade

Akan RedHat/Fedora/CentOS, gudu:

# yum install glade

Bayan ka sauke kuma ka shigar da shi, bayan ka kunna shi, za ka ga widget din Gtk da ke hannun hagu, danna maballin \taga don ƙirƙirar sabuwar taga.

Za ku lura cewa an ƙirƙiri sabon taga mara komai.

Yanzu za ku iya ƙara wasu widgets gare shi, a kan Toolbar hagu, danna kan widget din \button, sannan danna kan tagar da ba komai don ƙara maɓallin a cikin taga.

Za ku lura cewa maɓallin ID shine \button1, yanzu koma zuwa shafin Sigina a madaidaicin kayan aiki, sannan ku nemo siginar \latsa sannan ku shigar da\maballin1_latsa a ƙarƙashinsa.

Yanzu da muka ƙirƙiri GUI ɗin mu, bari mu fitar da shi. Danna menu na \Fayil kuma zaɓi \Ajiye, ajiye fayil ɗin a cikin kundin adireshin gidan ku a cikin sunan \myprogram.glade> kuma fita.

Yanzu, ƙirƙiri sabon fayil \test.py, sannan shigar da lambar a ciki.

#!/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()

Ajiye fayil ɗin, ba shi izini 755 kamar da, kuma gudanar da shi ta amfani da \./test.py, kuma abin da za ku samu ke nan.

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

Danna maɓallin, za ku lura cewa an buga jimlar \Hello, Duniya! a cikin tashar.

Yanzu bari mu bayyana sababbin abubuwa:

  1. Mai sarrafa aji: Anan muna ƙirƙirar aji mai suna \Handler wanda zai haɗa da ma'anar ayyuka da sigina, mun ƙirƙira don GUI.
  2. Builder = Gtk.Builder(): Mun ƙirƙiri sabon canjin duniya mai suna \builder wanda shine Gtk.Builder widget, wannan yana da mahimmanci don shigo da fayil ɗin .glade.< /li>
  3. builder.add_from_file(myprogram.glade): Anan muna shigo da fayil ɗin \myprogram.glade don amfani da shi azaman GUI na asali don shirinmu.
  4. builder.connect_signals(Handler()): Wannan layin yana haɗa fayil ɗin .glade tare da ajin mai sarrafa, ta yadda ayyuka da sigina waɗanda muka ayyana ƙarƙashin ajin \Handler suna aiki lafiya lokacin da muna gudanar da shirin.
  5. ournewbutton = builder.get_object(“button1”): Yanzu muna shigo da abu \button1 daga fayil ɗin .glade, muna kuma mika shi zuwa ga ma'auni na duniya\ournewbutton” don amfani da shi daga baya a cikin shirinmu.
  6. ournewbutton.set_label(Hello, Duniya!): Mun yi amfani da hanyar \set.label don saita tsoffin maballin rubutu zuwa Hello, Duniya! jumla.
  7. taga = builder.get_object(window1): Anan mun kira abu \window1 daga fayil ɗin .glade domin mu nuna shi daga baya a cikin shirin.

Kuma shi ke nan! Kun yi nasarar ƙirƙirar shirinku na farko a ƙarƙashin Linux!

Tabbas akwai abubuwa da yawa masu rikitarwa da za a yi don ƙirƙirar ainihin aikace-aikacen da ke yin wani abu, shi ya sa nake ba ku shawarar ku duba cikin takaddun GTK+ da GObject API a:

  1. GTK+ Manual Reference
  2. Python GObject API Reference
  3. Reference PyGObject

Shin kun ƙirƙiri wani aikace-aikace a baya ƙarƙashin tebur ɗin Linux? Wane harshe shirye-shirye da kayan aikin da aka yi amfani da su don yin shi? Me kuke tunani game da ƙirƙirar aikace-aikace ta amfani da Python & GTK 3?