Como criar um aplicativo simples em Python e GTK3

Como criar um aplicativo simples em Python e GTK3
Este artigo explicará como criar um aplicativo gráfico "Hello World" no Linux usando a linguagem de programação Python 3 e a estrutura GTK3 GUI. Todas as amostras de código no tutorial são testadas com Python 3.8.6 e GTK 3.24.23 no Ubuntu 20.10.

Instale os pacotes necessários

Para criar um aplicativo usando o Python 3 e o GTK3, você precisa instalar o Python Lindings para bibliotecas GOBJET. Isso pode ser feito instalando o pacote PygoBject incluído em repositórios de quase todas as principais distribuições Linux. Para instalar essas dependências no Ubuntu, você pode usar o comando abaixo:

$ sudo apt install python3 python3-gi

Você também pode compilar o PygoBject do código -fonte disponível aqui.

Código completo do aplicativo Hello World

Amostra de código completo de um aplicativo Hello World escrito em python 3 e gtk3 pode ser encontrado abaixo. Este aplicativo envia um “Hello World !!”Notificação na área de trabalho sobre o clique de um botão.

Importar GI
Gi.requim_version ("gtk", "3.0 ")
Gi.requim_version ('notify', '0.7 ')
de gi.Repositório de importação GTK
de gi.Importação do repositório notificar
classe MyWindow (GTK.Janela):
def __init __ (self):
Gtk.Janela.__nele mesmo,)
Gtk.Janela.set_default_size (self, 640, 480)
Notificar.init ("Aplicativo GTK3 simples")
auto.caixa = gtk.Caixa (espaçamento = 6)
auto.adicione (self.caixa)
auto.botão = gtk.Botão (Label = "Clique aqui")
auto.botão.set_halign (gtk.Alinhar.CENTRO)
auto.botão.set_valign (gtk.Alinhar.CENTRO)
auto.botão.Connect ("Clicked", eu.on_button_clicked)
auto.caixa.pack_start (self.botão, verdadeiro, verdadeiro, 0)
def on_button_clicked (self, widget):
n = notificar.Notificação.novo ("Aplicativo GTK3 simples", "Hello World !!")
n.mostrar()
win = myWindow ()
ganhar.Connect ("Destroy", GTK.main_quit)
ganhar.mostre tudo()
Gtk.principal()

Captura de tela do resultado final.

A notificação da área de trabalho que chega quando "clique aqui" é clicada:

Explicação passo a passo

Várias declarações de “importação” nas primeiras linhas do código Importar módulos necessários para o aplicativo funcionar. Esses módulos expõem inúmeras classes e funções que podem ser usadas no aplicativo. “Gi.As instruções require_version ”garantem que apenas a versão necessária da biblioteca seja importada para evitar problemas de compatibilidade e falhas. Neste caso “3.0 ”é usado para garantir que a biblioteca GTK3 seja usada no aplicativo e não no GTK2 ou em qualquer outra versão do GTK.

Semelhante à classe GTK, a classe Notify também é importada especificando sua versão necessária (0.7 é essa versão mais recente no momento da redação deste artigo). Esta classe será usada posteriormente no aplicativo.

Importar GI
Gi.requim_version ("gtk", "3.0 ")
Gi.requim_version ('notify', '0.7 ')
de gi.Repositório de importação GTK
de gi.Importação do repositório notificar

A próxima declaração subclasse “GTK.Classe de janela "como aula" MyWindow ". O “gtk.Janela.__init__ ”O método inicializa o construtor da super classe (GTK.Janela) a partir da qual uma subclasse (mywindow) foi criada. No construtor, o título do aplicativo também é definido como "Hello World" usando o argumento "título". A geometria padrão da janela do aplicativo também é definida especificando largura e altura no método "Set_Default_size".

classe MyWindow (GTK.Janela):
def __init __ (self):
Gtk.Janela.__nele mesmo,)
Gtk.Janela.set_default_size (self, 640, 480)

Em seguida, o método "init" da classe Notify é usado para inicializar a biblioteca "libnotificar", fornecendo um título de aplicativo. Sem inicialização, as notificações não serão enviadas e mostradas na área de trabalho do Linux.

Notificar.init ("Aplicativo GTK3 simples")

A declaração "Box" adiciona um recipiente de layout vazio à janela principal do aplicativo. Este contêiner é como uma tela vazia onde qualquer número de widgets pode ser colocado. "Espaçamento" refere -se ao espaço entre os widgets nas unidades "pixel".

auto.caixa = gtk.Caixa (espaçamento = 6)
auto.adicione (self.caixa)

Um novo widget de botão "Clique aqui" é criado usando o "GTK.Método de botão ”. Em seguida, está alinhado aos centros horizontais e verticais do layout da caixa pai usando métodos "set_halign" e "set_valign". O botão está conectado ao sinal "clicado" para que sempre que o botão for pressionado, o método de retorno de chamada "on_button_clicked" possa ser chamado. Por fim, o widget de botão é inserido da esquerda ao longo do eixo horizontal até o layout da caixa usando a “caixa.Método pack_start ”. Este método leva quatro argumentos: o objeto de widget a ser adicionado, booleano para expandir o widget, booleano para preencher o widget e preenchimento entre os widgets adicionados e outros adjacentes.

auto.botão = gtk.Botão (Label = "Clique aqui")
auto.botão.set_halign (gtk.Alinhar.CENTRO)
auto.botão.set_valign (gtk.Alinhar.CENTRO)
auto.botão.Connect ("Clicked", eu.on_button_clicked)
auto.caixa.pack_start (self.botão, verdadeiro, verdadeiro, 0)

O método "on_button_click" é chamado sempre que o botão "Clique aqui" é pressionado. Uma nova notificação é criada usando o método "novo" que recebe o título e o conteúdo da notificação como argumentos. Esta notificação é então mostrada na área de trabalho usando o método "show". Você também pode mover a declaração "nova" no construtor principal para evitar recriar a notificação sempre que o botão for pressionado.

def on_button_clicked (self, widget):
n = notificar.Notificação.novo ("Aplicativo GTK3 simples", "Hello World !!")
n.mostrar()

As próximas declarações são sobre criar, gerenciar e mostrar uma nova janela de aplicativo. Uma nova instância da classe "MyWindow" é criada e está conectada ao sinal "Destruir" para garantir que o aplicativo seja fechado corretamente sempre que um usuário decidir sair do aplicativo clicando no botão "X". O método "show_all" exibe a janela do aplicativo na sua área de trabalho do Linux. Por fim, o principal loop de aplicativos responsável pelo manuseio de eventos e sinais é executado.

Conclusão

GTK3 e QT são algumas das estruturas mais populares da GUI usadas para criar aplicativos que executam nativamente no Linux. Ambas as estruturas permitem que você escreva a lógica principal em idiomas C ++ e Python. Você não pode dar errado escolhendo qualquer um desses kits de ferramentas para o seu próximo projeto de aplicativo Linux.