Zoeken op website

Creëer meer geavanceerde GUI-applicaties met PyGobject Tool in Linux - Deel 2


We vervolgen onze serie over het maken van GUI-applicaties onder de Linux-desktop met behulp van PyGObject. Dit is het tweede deel van de serie en vandaag zullen we het hebben over het maken van meer functionele applicaties met behulp van enkele geavanceerde widgets.

Vereisten

  1. Creëer GUI-applicaties onder Linux met PyGObject – Deel 1

In het vorige artikel zeiden we dat er twee manieren zijn om GUI-applicaties te maken met PyGObject: de alleen-code-manier en de Glade designer-manier , maar vanaf nu leggen we alleen de Glade designer-manier uit, omdat dit voor de meeste gebruikers veel gemakkelijker is. Je kunt de code-only-manier zelf leren met behulp van python-gtk3-tutorial.

Geavanceerde GUI-applicaties maken in Linux

1. Laten we beginnen met programmeren! Open uw Glade-ontwerper vanuit het toepassingenmenu.

2. Klik op de knop 'Venster' in de linkerzijbalk om een nieuw venster te maken.

3. Klik op de widget “Box” en laat deze los in het lege venster.

4. U wordt gevraagd het gewenste aantal dozen in te voeren, maak er 3 van.

En je zult zien dat de vakken worden gemaakt. Deze vakken zijn belangrijk voor ons om meer dan slechts 1 widget in een venster toe te kunnen voegen.

5. Klik nu op de widget vak en wijzig het oriëntatietype van verticaal in horizontaal.

6. Om een eenvoudig programma te maken, voegt u een “Tekstinvoer”, “Combo Box-tekst” en een “Knop toe ”widgets voor elk van de vakken, je zou zoiets als dit moeten hebben.

7. Klik nu op de widget “venster1” in de rechterzijbalk en verander de positie in “Midden“.

Scroll naar beneden naar het gedeelte 'Uiterlijk'. En voeg een titel toe voor het venster 'Mijn programma'.

8. U kunt ook een pictogram voor het venster kiezen door op het vak "Icoonnaam" te klikken.

9. U kunt ook de standaard hoogte en breedte voor de toepassing wijzigen. Na dit alles zou u zoiets als dit moeten hebben.

In elk programma is een van de belangrijkste dingen het creëren van een “Over”-venster. Om dit te doen, zullen we eerst de normale knop die we eerder hebben gemaakt, moeten veranderen in een aandelenknop, kijk naar De foto.

10. Nu moeten we enkele signalen aanpassen om specifieke acties uit te voeren wanneer er een gebeurtenis plaatsvindt op onze widgets. Klik op de tekstinvoer-widget, ga naar het tabblad 'Signalen' in de rechterzijbalk, zoek naar 'geactiveerd' en wijzig de handler in “enter_button_clicked”, het signaal “geactiveerd ” is het standaardsignaal dat wordt verzonden wanneer de toets “Enter” wordt ingedrukt terwijl de focus op de tekst ligt invoerwidget.

We zullen een andere handler moeten toevoegen voor het signaal “klikte” voor onze widget over de knop Over, klik erop en verander het signaal “klikte” in “button_is_clicked “.

11. Ga naar het tabblad 'Algemeen' en markeer 'Heeft focus' als volgt (om de standaardfocus voor de knop 'Over' te geven in plaats van de invoer).

12. Maak nu vanuit de linkerzijbalk een nieuw venster 'Over het dialoogvenster'.

En u zult merken dat het venster “Over Dialoog” wordt aangemaakt.

Laten we het aanpassen. Zorg ervoor dat u de volgende instellingen ervoor invoegt vanuit de rechterzijbalk.

Nadat u bovenstaande instellingen heeft gemaakt, krijgt u informatie over Window.

In het bovenstaande venster ziet u de lege ruimte, maar u kunt deze verwijderen door het aantal vakjes te verlagen van 3 naar 2, of u kunt er desgewenst een widget aan toevoegen.

13. Sla het bestand nu op in uw thuismap onder de naam “ui.glade ” en open een teksteditor en voer daarin de volgende code in.


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

Sla het bestand op in uw thuismap onder de naam “mijnprogramma.py”, geef het de toestemming om het uit te voeren en voer het uit.

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

Voer een tekst in het invoervak in, druk op de toets “Enter” op het toetsenbord en u zult merken dat de zin op de shell wordt afgedrukt.

Dat is alles voor nu, het is geen volledige applicatie, maar ik wilde je alleen laten zien hoe je dingen aan elkaar kunt koppelen met PyGObject. Je kunt alle methoden voor alle GTK-widgets bekijken op gtkobjecten.

Leer gewoon de methoden, maak de widgets met Glade en verbind de signalen met behulp van het Python-bestand. Dat is alles! Het is helemaal niet moeilijk mijn vriend.

We zullen meer nieuwe dingen over PyGObject uitleggen in de volgende delen van de serie, blijf tot die tijd op de hoogte en vergeet niet ons uw opmerkingen over het artikel te geven.