Sukurkite daugiau pažangių GUI programų naudodami „PyGobject“ įrankį sistemoje „Linux“ – 2 dalis


Tęsiame seriją apie GUI programų kūrimą Linux darbalaukyje naudojant PyGObject. Tai antroji serijos dalis ir šiandien kalbėsime apie funkcionalesnių programų kūrimą naudojant kai kuriuos pažangius valdiklius.

Reikalavimai

  1. Sukurkite GUI programas Linux sistemoje naudodami PyGObject – 1 dalis

Ankstesniame straipsnyje sakėme, kad yra du GUI programų kūrimo būdai naudojant PyGObject: tik kodo būdas ir Glade dizainerio būdas. , tačiau nuo šiol paaiškinsime tik Glade dizainerio būdą, nes daugumai vartotojų tai daug lengviau, galite patys išmokti kodo būdo naudodami python-gtk3-mokomąją programą.

Išplėstinių GUI programų kūrimas sistemoje „Linux“.

1. Pradėkime programuoti! Programų meniu atidarykite savo Glade dizainerį.

2. Spustelėkite mygtuką Langas kairėje šoninėje juostoje, kad sukurtumėte naują.

3. Spustelėkite „Box“ valdiklį ir atleiskite jį tuščiame lange.

4. Būsite paraginti įvesti norimą laukelių skaičių ir padaryti jį 3.

Pamatysite, kad laukeliai yra sukurti, jie mums svarbūs, kad į langą galėtume pridėti daugiau nei 1 valdiklį.

5. Dabar spustelėkite valdiklį laukelis ir pakeiskite orientacijos tipą iš vertikalios į horizontalią.

6. Norėdami sukurti paprastą programą, pridėkite „Teksto įvedimas“, „Sudėtinio laukelio tekstas“ ir „mygtukas ” valdiklius kiekvienam langeliui, turėtumėte turėti kažką panašaus.

7. Dabar dešinėje šoninėje juostoje spustelėkite valdiklį „langas1“ ir pakeiskite jo padėtį į „Centras“.

Slinkite žemyn iki skilties „Išvaizda“ ir pridėkite lango pavadinimą „Mano programa“.

8. Taip pat galite pasirinkti lango piktogramą spustelėdami laukelį Piktogramos pavadinimas.

9. Taip pat galite pakeisti programos numatytąjį aukštį ir plotį. Po viso to turėtumėte turėti kažką panašaus.

Bet kurioje programoje vienas iš svarbiausių dalykų yra sukurti langą „Apie“, kad tai padarytume, pirmiausia įprastą mygtuką, kurį anksčiau sukūrėme, pakeisti į akcijų mygtuką, žr. Nuotrauka.

10. Dabar turėsime pakeisti kai kuriuos signalus, kad galėtume atlikti konkrečius veiksmus, kai mūsų valdikliuose įvyksta koks nors įvykis. Spustelėkite valdiklį teksto įvedimas, dešinėje šoninėje juostoje perjunkite į skirtuką Signalai, ieškokite „aktyvinta“ ir pakeiskite jo tvarkyklę į „enter_button_clicked“, signalas „aktyvintas“ yra numatytasis signalas, siunčiamas, kai fokusuojant tekstą paspaudžiamas klavišas „Enter“ įvesties valdiklis.

Turėsime pridėti kitą mygtuko valdiklio „spustelėtas“ signalo tvarkyklę, spustelėkite jį ir pakeiskite signalą „spustelėta“ į „button_is_clicked “.

11. Eikite į skirtuką „Bendra“ ir pažymėkite „Yra fokusas“, kaip nurodyta toliau (kad mygtukui apie numatytąjį fokusą suteiktų vietoj įrašo).

12. Dabar kairiojoje šoninėje juostoje sukurkite naują langą Apie dialogo langą.

Ir jūs pastebėsite, kad sukurtas langas „Apie dialogą“.

Pakeiskime jį... Įsitikinkite, kad dešinėje šoninėje juostoje įdėjote toliau nurodytus nustatymus.

Atlikę aukščiau nurodytus nustatymus, sužinosite apie langą.

Aukščiau esančiame lange pastebėsite tuščią vietą, bet galite ją pašalinti sumažindami langelių skaičių nuo 3 iki 2 arba, jei norite, galite pridėti bet kokį valdiklį.

13. Dabar išsaugokite failą savo namų aplanke pavadinimu ui.glade ir atidarykite teksto rengyklę ir įveskite jame šį kodą.


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

from gi.repository import Gtk
class Handler:

    def button_is_clicked(self, button):
        ## The ".run()" method is used to launch the about window.
         ouraboutwindow.run()
        ## This is just a workaround to enable closing the about window.
         ouraboutwindow.hide()

    def enter_button_clicked(self, button):
        ## The ".get_text()" method is used to grab the text from the entry box. The "get_active_text()" method is used to get the selected item from the Combo Box Text widget, here, we merged both texts together".
         print ourentry.get_text() + ourcomboboxtext.get_active_text()

## Nothing new here.. We just imported the 'ui.glade' file.
builder = Gtk.Builder()
builder.add_from_file("ui.glade")
builder.connect_signals(Handler())

ournewbutton = builder.get_object("button1")

window = builder.get_object("window1")

## Here we imported the Combo Box widget in order to add some change on it.
ourcomboboxtext = builder.get_object("comboboxtext1")

## Here we defined a list called 'default_text' which will contain all the possible items in the Combo Box Text widget.
default_text = [" World ", " Earth ", " All "]

## This is a for loop that adds every single item of the 'default_text' list to the Combo Box Text widget using the '.append_text()' method.
for x in default_text:
  ourcomboboxtext.append_text(x)

## The '.set.active(n)' method is used to set the default item in the Combo Box Text widget, while n = the index of that item.
ourcomboboxtext.set_active(0)
ourentry = builder.get_object("entry1")

## This line doesn't need an explanation :D
ourentry.set_max_length(15)

## Nor this do.
ourentry.set_placeholder_text("Enter A Text Here..")

## We just imported the about window here to the 'ouraboutwindow' global variable.
ouraboutwindow = builder.get_object("aboutdialog1")

## Give that developer a cookie !
window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main

Išsaugokite failą savo namų kataloge tuo pavadinimu „manoprograma.py“, suteikite jam vykdymo leidimą ir paleiskite.

chmod 755 myprogram.py
./myprogram.py
This is what you will get, after running above script.

Įveskite tekstą į įvesties laukelį, paspauskite klaviatūros klavišą Enter ir pastebėsite, kad sakinys atspausdintas prie apvalkalo.

Tai kol kas viskas, tai ne visa programa, bet aš tiesiog norėjau parodyti, kaip susieti dalykus naudojant PyGObject. Galite peržiūrėti visus visų GTK valdiklių metodus adresu gtkoobjektai.

Tiesiog išmokite metodus, sukurkite valdiklius naudodami Glade ir prijunkite signalus naudodami Python failą. Viskas! Tai visai nesunku, mano drauge.

Kitose serijos dalyse paaiškinsime daugiau naujų dalykų apie PyGObject, iki tol sekite naujienas ir nepamirškite pateikti mums savo komentarų apie straipsnį.