Wyszukiwanie w witrynie

Twórz więcej zaawansowanych aplikacji GUI za pomocą narzędzia PyGobject w systemie Linux — część 2


Kontynuujemy naszą serię dotyczącą tworzenia aplikacji GUI pod Linuksem przy użyciu PyGObject. Jest to druga część serii i dzisiaj będziemy mówić o tworzeniu bardziej funkcjonalnych aplikacji przy użyciu zaawansowanych widżetów.

Wymagania

  1. Twórz aplikacje GUI pod Linuksem za pomocą PyGObject – część 1

W poprzednim artykule powiedzieliśmy, że istnieją dwa sposoby tworzenia aplikacji GUI przy użyciu PyGObject: sposób tylko kod i sposób projektanta Glade , ale odtąd będziemy wyjaśniać jedynie sposób projektowania Glade, ponieważ dla większości użytkowników jest on znacznie łatwiejszy. Możesz samodzielnie nauczyć się sposobu opartego wyłącznie na kodzie, korzystając z samouczka Pythona-gtk3.

Tworzenie zaawansowanych aplikacji GUI w systemie Linux

1. Zacznijmy programować! Otwórz projektanta Glade z menu aplikacji.

2. Kliknij przycisk „Okno” na lewym pasku bocznym, aby utworzyć nowe.

3. Kliknij widżet „Box” i puść go w pustym oknie.

4. Zostaniesz poproszony o podanie żądanej liczby pól, ustaw ją na 3.

I zobaczysz, że boksy zostały utworzone, te pola są dla nas ważne, aby móc dodać więcej niż tylko widżet 1 w oknie.

5. Teraz kliknij widżet pole i zmień typ orientacji z pionowej na poziomą.

6. Aby utworzyć prosty program, dodaj „Wpis tekstu”, „Tekst pola kombi” i „Przycisk ” dla każdego z pól, powinieneś mieć coś takiego.

7. Teraz kliknij widżet „okno1” na prawym pasku bocznym i zmień jego położenie na „Centrum”.

Przewiń w dół do sekcji „Wygląd”.. I dodaj tytuł okna „Mój program”.

8. Możesz także wybrać ikonę dla okna, klikając pole „Nazwa ikony”.

9. Możesz także zmienić domyślną wysokość i szerokość aplikacji. Po tym wszystkim powinieneś mieć coś takiego.

W każdym programie jedną z najważniejszych rzeczy jest utworzenie okna „Informacje”. Aby to zrobić, najpierw będziemy musieli zmienić zwykły przycisk, który wcześniej stworzyliśmy, na przycisk podstawowy, spójrz na zdjęcie.

10. Teraz będziemy musieli zmodyfikować niektóre sygnały, aby uruchamiać określone działania po wystąpieniu dowolnego zdarzenia w naszych widżetach. Kliknij widżet wprowadzanie tekstu, przejdź do zakładki „Sygnały” na prawym pasku bocznym, wyszukaj „aktywowane” i zmień jego procedurę obsługi na „enter_button_clicked ”, sygnał „aktywowany” to domyślny sygnał wysyłany po naciśnięciu klawisza „Enter” podczas skupiania uwagi na tekście widżet wejściowy.

Będziemy musieli dodać kolejną procedurę obsługi sygnału „kliknięty” dla naszego widżetu przycisku „Informacje”, kliknij go i zmień sygnał „kliknięty” na „button_is_clicked” „.

11. Przejdź do zakładki „Wspólne” i zaznacz opcję „Ma fokus” w następujący sposób (Aby ustawić domyślny fokus dla przycisku Informacje zamiast wpisu).

12. Teraz na lewym pasku bocznym utwórz nowe okno „Okno dialogowe”.

Zauważysz, że zostało utworzone okno „Okno dialogowe”.

Zmodyfikujmy go.. Upewnij się, że wstawiłeś dla niego następujące ustawienia z prawego paska bocznego.

Po dokonaniu powyższych ustawień będziesz mógł śledzić informacje na temat okna.

W powyższym oknie zauważysz puste miejsce, ale możesz je usunąć zmniejszając liczbę boksów z 3 do 2 lub możesz dodać do niego dowolny widget, jeśli chcesz.

13. Teraz zapisz plik w swoim folderze domowym pod nazwą „ui.glade”, otwórz edytor tekstu i wpisz w nim następujący 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

Zapisz plik w swoim katalogu domowym pod nazwą „myprogram.py”, nadaj mu uprawnienia do wykonywania i uruchom go.

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

Wpisz tekst w polu wprowadzania, naciśnij klawisz „Enter” na klawiaturze, a zauważysz, że zdanie jest drukowane na powłoce.

Na razie to wszystko, nie jest to kompletna aplikacja, ale chciałem tylko pokazać, jak połączyć ze sobą elementy za pomocą PyGObject. Wszystkie metody dla wszystkich widżetów GTK możesz zobaczyć na stronie obiekty gtk.

Po prostu poznaj metody, utwórz widżety za pomocą Glade i połącz sygnały za pomocą pliku Pythona i gotowe! To wcale nie jest trudne, mój przyjacielu.

Więcej nowych rzeczy na temat PyGObject wyjaśnimy w kolejnych częściach serii, do tego czasu bądź na bieżąco i nie zapomnij podzielić się z nami swoimi komentarzami na temat artykułu.