Pesquisa de site

Crie aplicativos GUI mais avançados usando a ferramenta PyGobject no Linux - Parte 2


Continuamos nossa série sobre a criação de aplicativos GUI no desktop Linux usando PyGObject. Esta é a segunda parte da série e hoje falaremos sobre a criação de aplicativos mais funcionais usando alguns widgets avançados.

Requisitos

  1. Crie aplicativos GUI no Linux usando PyGObject – Parte 1

No artigo anterior dissemos que existem duas maneiras de criar aplicações GUI usando PyGObject: a code-only-way e a maneira do designer Glade , mas de agora em diante, explicaremos apenas o modo de designer do Glade, já que é muito mais fácil para a maioria dos usuários. Você pode aprender o modo somente de código usando python-gtk3-tutorial.

Criando aplicativos GUI avançados no Linux

1. Vamos começar a programar! Abra seu designer Glade no menu de aplicativos.

2. Clique no botão “Janela ” na barra lateral esquerda para criar uma nova.

3. Clique no widget “Caixa ” e solte-o na janela vazia.

4. Você será solicitado a inserir o número de caixas que deseja, escolha 3.

E você verá que as caixas são criadas, essas caixas são importantes para nós podermos adicionar mais do que apenas 1 widget em uma janela.

5. Agora clique no widget caixa e altere o tipo de orientação de vertical para horizontal.

6. Para criar um programa simples, adicione uma “entrada de texto ”, “texto da caixa de combinação” e um “botão ”widgets para cada uma das caixas, você deverá ter algo assim.

7. Agora clique no widget “window1” na barra lateral direita e mude sua posição para “Centro“.

Role para baixo até a seção “Aparência”. E adicione um título para a janela “Meu Programa“.

8. Você também pode escolher um ícone para a janela clicando na caixa “Nome do ícone”.

9. Você também pode alterar a altura e a largura padrão do aplicativo. Depois de tudo isso, você deverá ter algo assim.

Em qualquer programa, uma das coisas mais importantes é criar uma janela “Sobre”, para isso, primeiro teremos que transformar o botão normal que criamos antes em um botão stock, veja a imagem.

10. Agora teremos que modificar alguns sinais para executar ações específicas quando ocorrer algum evento em nossos widgets. Clique no widget entrada de texto, mude para a guia “Sinais” na barra lateral direita, pesquise “ativado” e altere seu manipulador para “enter_button_clicked ”, o sinal “ativado ” é o sinal padrão enviado quando a tecla “Enter ” é pressionada enquanto foca no texto widget de entrada.

Teremos que adicionar outro manipulador para o sinal “clicado” para nosso widget de botão sobre, clicar nele e alterar o sinal “clicado” para “button_is_clicked “.

11. Vá para a guia “Comum ” e marque “Tem foco ” conforme segue (para fornecer o foco padrão para o botão Sobre em vez da entrada).

12. Agora, na barra lateral esquerda, crie uma nova janela “Sobre a caixa de diálogo”.

E você notará que a janela “Sobre a caixa de diálogo” é criada.

Vamos modificá-lo. Certifique-se de inserir as seguintes configurações na barra lateral direita.

Depois de fazer as configurações acima, você seguirá o Window.

Na janela acima, você notará o espaço vazio, mas pode removê-lo diminuindo o número de caixas de 3 para 2 ou pode adicionar qualquer widget a ele, se desejar.

13. Agora salve o arquivo em sua pasta pessoal com o nome “ui.glade ” e abra um editor de texto e digite o seguinte código dentro dele.


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

Salve o arquivo em seu diretório inicial com o nome “myprogram.py”, dê a ele permissão de execução e execute-o.

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

Digite um texto na caixa de entrada, pressione a tecla “Enter” no teclado e você notará que a frase está impressa no shell.

Por enquanto é tudo, não é um aplicativo completo, mas eu só queria mostrar como vincular coisas usando PyGObject, você pode ver todos os métodos para todos os widgets GTK em gtkobjects.

Basta aprender os métodos, criar os widgets usando o Glade e conectar os sinais usando o arquivo Python, é isso! Não é nada difícil meu amigo.

Explicaremos mais novidades sobre o PyGObject nas próximas partes da série, até então fique atualizado e não se esqueça de nos dar seus comentários sobre o artigo.