Erstellt Méi Advance GUI Uwendungen mat PyGobject Tool a Linux - Deel 2


Mir fuere weider eis Serie iwwer d'Schafe vun GUI Uwendungen ënner dem Linux Desktop mat PyGObject, Dëst ass den zweeten Deel vun der Serie an haut schwätze mer iwwer d'Schafe vun méi funktionnelle Applikatiounen mat e puer fortgeschratt Widgets.

  1. GUI Uwendungen erstellen ënner Linux Mat PyGObject - Deel 1

Am viregten Artikel hu mir gesot datt et zwee Weeër gi fir GUI Uwendungen mat PyGObject ze kreéieren: den code-only-way an den Glade Designer Wee , awer vun elo un erkläre mir nëmmen den Glade Designer Wee well et vill méi einfach ass fir déi meescht Benotzer, Dir kënnt de Code-nëmmen-Wee selwer léieren andeems Dir Python-gtk3-Tutorial benotzt.

Erstellt Advance GUI Uwendungen am Linux

1. Loosst d'programméiere ufänken! Öffnen Äre Glade Designer aus dem Applikatiounsmenü.

2. Klickt op de \Fënster Knäppchen op der lénker Sidebar fir en neien ze kreéieren.

3. Klickt op de Widget \Box a léisst et op der eidel Fënster eraus.

4. Dir wäert gefuerdert ginn d'Zuel vun de Këschte anzeginn déi Dir wëllt, maacht et 3.

An Dir gesitt datt d'Këschten erstallt sinn, déi Këschte si wichteg fir eis fir méi wéi just 1 Widget an enger Fënster derbäizesetzen.

5. Klickt elo op de Këscht Widget, a ännert d'Orientéierungstyp vun vertikal op horizontal.

6. Fir en einfache Programm ze kreéieren, füügt e \Textentrée, \Combo Box Text an e \Knäppchen derbäi. Widgets fir all eenzel vun de Këschte, Dir sollt esou eppes hunn.

7. Elo klickt op de \window1 Widget vun der rietser Sidebar, a ännert seng Positioun op \Center.

Scroll down to the \Appearance Sektioun .. A füügt en Titel fir d'Fënster Mäi Programm.

8. Dir kënnt och eng Ikon fir d'Fënster wielen andeems Dir op d'Këscht \Ikon Numm klickt.

9. Dir kënnt och d'StandardHéicht & Breet fir d'Applikatioun änneren.. No all deem, sollt Dir esou eppes hunn.

An all Programm ass ee vun de Wichtegsten eng \Iwwer Fënster ze kreéieren, fir dëst ze maachen, musse mir als éischt den normalen Knäppchen, dee mir virdru erstallt hunn, an e Stock Button änneren, kuckt op der Foto.

10. Elo musse mir e puer Signaler änneren fir spezifesch Aktiounen auszeféieren wann all Event op eise Widgets geschitt. Klickt op den Textentrée Widget, wiesselt op de Tab \Signalen an der rietser Sidebar, sicht no \aktivéiert an ännert seng Handler op \enter_button_clicked, de \aktivéiert Signal ass de Standardsignal dat geschéckt gëtt wann de \Enter Schlëssel getraff gëtt wärend Dir op den Textentrée Widget fokusséiert.

Mir mussen en aneren Handler fir den \geklickte Signal fir eisen Iwwer-Knäppchen-Widget derbäisetzen, klickt drop a ännert de \geklickte Signal op \< b>button_ass_clicked“.

11. Gitt op d'Tab \Common a markéiert \Has Focus wéi et follegt (Fir de Standardfokus fir den About Button amplaz vun der Entrée ze ginn) .

12. Elo vun der lénker Sidebar, erstellt eng nei \Iwwer Dialog Fënster.

An Dir wäert feststellen datt d'Iwwer Dialog Fënster erstallt ass.

Loosst eis et änneren .. Vergewëssert Iech datt Dir déi folgend Astellunge fir et aus der rietser Sidebar setzt.

Nodeems Dir uewen Astellunge gemaach hutt, kritt Dir folgend iwwer Windows.

An der uewe genannter Fënster gesitt Dir déi eidel Plaz, awer Dir kënnt et ewechhuelen andeems Dir d'Zuel vun de Këschte vun 3 op 2 ofleet oder Dir kënnt all Widget derbäi addéieren wann Dir wëllt.

13. Elo späichert d'Datei an Ärem Dossier doheem am Numm \ui.glade an öffnen en Texteditor a gitt de folgende Code dran.

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

Späichert d'Datei an Ärem Heemverzeichnis ënner deem Numm \myprogram.py, a gitt et d'Ausféierungserlaabnes a lafen se.

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

Gitt en Text an d'Entrée Këscht, dréckt den \Enter Schlëssel op der Tastatur, an Dir wäert feststellen datt de Saz an der Schuel gedréckt ass.

Dat ass alles fir de Moment, et ass net eng komplett Applikatioun, awer ech wollt Iech just weisen wéi Dir Saache matenee verbënnt mat PyGObject, Dir kënnt all Methode fir all GTK Widgets kucken op gtkoobjects.

Léiert einfach d'Methoden, erstellt d'Widgets mat Glade a verbënnt d'Signaler mat der Python Datei, Dat ass et! Et ass guer net schwéier mäi Frënd.

Mir erkläre méi nei Saachen iwwer PyGObject an den nächsten Deeler vun der Serie, bis dohinner bleift aktualiséiert a vergiesst net eis Är Kommentaren iwwer den Artikel ze ginn.