Opret flere avancerede GUI-applikationer ved hjælp af PyGobject-værktøjet i Linux - del 2


Vi fortsætter vores serie om oprettelse af GUI-applikationer under Linux-skrivebordet ved hjælp af PyGObject . Dette er anden del af serien, og i dag vil vi tale om at oprette mere funktionelle applikationer ved hjælp af nogle avancerede widgets.

  1. Opret GUI-applikationer under Linux ved hjælp af PyGObject - del 1

I den forrige artikel sagde vi, at der er to måder til at oprette GUI-applikationer ved hjælp af PyGObject : kun-kode-måde og Glade designer måde , men fra nu af forklarer vi kun Glade -designermåden, da det er meget lettere for de fleste brugere, kan du selv lære den kode-kun-måde ved hjælp af python-gtk3-tutorial.

Oprettelse af avancerede GUI-applikationer i Linux

1. Lad os starte programmeringen! Åbn din Glade designer fra applikationsmenuen.

2. Klik på knappen " Vindue " i venstre sidepanel for at oprette en ny.

3. Klik på widget “ Box ”, og slip den i det tomme vindue.

4. Du bliver bedt om at indtaste antallet af felter, du vil have, og gør det til 3 .

Og du vil se, at bokse er oprettet, disse felter er vigtige for os for at kunne tilføje mere end bare 1 widget i et vindue.

5. Klik nu på widget boks , og skift retningstypen fra lodret til vandret .

6. For at oprette et simpelt program skal du tilføje en " tekstindtastning ", " kombinationsbokstekst " og en " knap " -widgets til hver af boksene, skulle du have noget som dette.

7. Klik nu på " vindue1 " -widgeten fra højre sidepanel, og skift dens position til " Center ".

Rul ned til afsnittet " Udseende ". Og tilføj en titel til vinduet " Mit program ".

8. Du kan også vælge et ikon til vinduet ved at klikke på feltet " Ikonnavn ".

9. Du kan også ændre standard højde & bredde for applikationen. Efter alt dette skal du have noget som dette.

I ethvert program er en af de vigtigste ting at oprette et " Om " vindue. For at gøre dette skal vi først ændre den normale knap, vi oprettede før, til en lagerknap, se på billedet.

10. Nu bliver vi nødt til at ændre nogle signaler for at køre specifikke handlinger, når der sker en begivenhed på vores widgets. Klik på widget tekstindtastning , skift til fanen “ Signaler ” i højre sidepanel, søg efter “ aktiveret ”, og skift dens handler til “ enter_button_clicked ”, " aktiveret " signalet er standardsignalet, der sendes, når " Enter" -tasten trykkes, mens du fokuserer på teksten post-widget.

Vi bliver nødt til at tilføje en anden handler til signalet " klikket " til vores om-knap-widget, klikke på det og ændre signalet " klikket " til " knap_is_klikket “.

11. Gå til fanen " Almindelig " og markér " Har fokus " som følger (At give standardfokus for ca.-knappen i stedet for posten).

12. Opret nu et nyt vindue “ Om dialog ” fra venstre sidebjælke.

Og du vil bemærke, at vinduet “ Om dialog ” oprettes.

Lad os ændre det. Sørg for, at du indsætter følgende indstillinger for det fra højre sidepanel.

Når du har foretaget ovenstående indstillinger, får du følgende oplysninger om Window.

I ovenstående vindue bemærker du det tomme rum, men du kan fjerne det ved at afvise antallet af felter fra 3 til 2, eller du kan tilføje en hvilken som helst widget til det, hvis du vil.

13. Gem nu filen i din hjemmemappe i navnet “ ui.glade ”, og åbn en teksteditor og indtast følgende kode inde i den.

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

Gem filen i din hjemmekatalog under det navn " myprogram.py ", og giv den udførelsestilladelse og kør den.

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

Indtast en tekst i indtastningsfeltet, tryk på “ Enter ” -tasten på tastaturet, og du vil bemærke, at sætningen udskrives på skallen.

Det er alt for nu, det er ikke en komplet applikation, men jeg ville bare vise dig, hvordan du knytter ting sammen ved hjælp af PyGObject , du kan se alle metoder til alle GTK widgets på gtkobjects.

Lær bare metoderne, opret widgets ved hjælp af Glade , og tilslut signalerne ved hjælp af Python-filen, det er det! Det er slet ikke svært min ven.

Vi forklarer flere nye ting om PyGObject i de næste dele af serien, indtil da holder dig opdateret, og glem ikke at give os dine kommentarer til artiklen.