Criar aplicações de interface gráfica (GUI) é uma forma fantástica de trazer suas ideias à vida e tornar seus programas mais amigáveis ao usuário.
PyGObject é uma biblioteca de Python que permite que desenvolvedores criem aplicações de GUI no ambiente de desktop Linux usando a GTK (GIMP Toolkit) framework. GTK é amplamente usado em ambientes Linux, fornecendo muitas aplicações desktop populares como Gedit, GNOME terminal, entre outras.
Neste artigo, nós exploraremos como criar aplicações de GUI num ambiente de desktop Linux usando PyGObject. Vamos começar entendendo o que é PyGObject, como instalá-lo, e depois vamos construir uma simples aplicação de GUI.
Passo 1: Instalar Python e GTK no Linux
Para trabalhar com PyGObject, você precisa ter o Python instalado e a maioria das distribuições Linux de hoje vem com Python pré-instalado, mas você pode confirmar executando:
python3 --version Python 3.12.3
Se o Python não estiver instalado, você pode instalá-lo usando o comando apropriado abaixo para sua distribuição Linux específica.
sudo apt install python3 [On Debian, Ubuntu and Mint] sudo dnf install python3 [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] sudo apk add python3 [On Alpine Linux] sudo pacman -S python [On Arch Linux] sudo zypper install python3 [On OpenSUSE]
Agora, você precisa instalar as bindings PyGObject para Python, bem como as bibliotecas de desenvolvimento GTK.
sudo apt install python3-gi gir1.2-gtk-3.0 [On Debian, Ubuntu and Mint] sudo dnf install python3-gobject gtk3 [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] sudo apk add py3-gobject gtk+3 [On Alpine Linux] sudo pacman -S python-gobject gtk3 [On Arch Linux] sudo zypper install python3-gobject gtk3 [On OpenSUSE]
Step 2: Instalando PyGObject no Linux
Uma vez que o Python e as bibliotecas de desenvolvimento GTK estejam instalados, agora você pode instalar o PyGObject usando o seguinte comando apropriado para sua distribuição Linux específica.
sudo apt install python3-gi [On Debian, Ubuntu and Mint] sudo dnf install pygobject3 [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] sudo apk add py3-gobject [On Alpine Linux] sudo pacman -S python-gobject [On Arch Linux] sudo zypper install python3-gobject [On OpenSUSE]
Após a instalação, você estará pronto para começar a desenvolver aplicações de interface gráfica usando PyGObject e GTK.
Criando a Primeira Aplicação de GUI do PyGObject no Linux
Agora, vamos construir uma aplicação PyGObject simples que exibe uma janela com um botão. Quando o botão é clicado, ele exibirá uma mensagem dizendo, “Olá, Mundo!“.
Crie um arquivo Python chamado app.py
, e vamos começar a escrever a estrutura básica de nossa aplicação PyGObject.
import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk class MyApp(Gtk.Window): def __init__(self): Gtk.Window.__init__(self, title="Hello World App") self.set_size_request(300, 100) # Creating a button and adding it to the window button = Gtk.Button(label="Click Me") button.connect("clicked", self.on_button_clicked) self.add(button) def on_button_clicked(self, widget): print("Hello, World!") # Initialize the application app = MyApp() app.connect("destroy", Gtk.main_quit) # Close the app when window is closed app.show_all() Gtk.main()
Explicação do Código:
- As primeiras duas linhas importam os módulos necessários do PyGObject. Nós especificamos a versão do GTK que queremos usar (
3.0
neste caso). - A classe
MyApp
herda deGtk.Window
, que representa a janela principal da aplicação. - Nós criamos um botão usando
Gtk.Button
, e o rótulo do botão é definido como “Clique Aqui“. Também conectamos o sinal “clicado” do botão à métodoon_button_clicked
, que imprime “Olá, Mundo!” quando clicado. - O loop principal da aplicação é iniciado chamando
Gtk.main()
. Este loop espera por eventos (como cliques) e atualiza a aplicação de acordo.
Para executar a aplicação, navegue até o diretório onde salvou o arquivo app.py
e execute o seguinte comando:
python3 app.py
A janela aparecerá com um botão rotulado “Clique em Mim“. Quando você clicar no botão, “Olá, Mundo!” será impresso no terminal.

Adicionando Mais Recursos à Sua Aplicação PyGObject
Agora vamos expandir sua aplicação adicionando mais widgets e interatividade.
1. Adicionando uma Etiqueta
Nós podemos melhorar a nossa aplicação adicionando um Gtk.Label
para exibir mensagens na janela, ao invés de imprimi-las no terminal.
import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk class MyApp(Gtk.Window): def __init__(self): Gtk.Window.__init__(self, title="Enhanced GUI App") self.set_size_request(400, 200) # Create a vertical box layout vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10) self.add(vbox) # Create a label self.label = Gtk.Label(label="Press the button to see a message") vbox.pack_start(self.label, True, True, 0) # Create a button button = Gtk.Button(label="Click Me") button.connect("clicked", self.on_button_clicked) vbox.pack_start(button, True, True, 0) def on_button_clicked(self, widget): self.label.set_text("Hello, World!") # Initialize the application app = MyApp() app.connect("destroy", Gtk.main_quit) app.show_all() Gtk.main()
Explicação das mudanças:
- Nós usamos
Gtk.Box
para organizar widgets verticalmente, o que nos ajuda a arranjar a etiqueta e o botão um atrás do outro. - O widget
Gtk.Label
é adicionado para exibir uma mensagem dentro da janela. - Ao invés de imprimir no terminal, a função
on_button_clicked
agora atualiza o texto da etiqueta.

2. Adicionando Campos de Entrada para Entrada do Usuário
A seguir, vamos adicionar widgets Gtk.Entry
para permitir entrada do usuário, o que nos permitirá criar uma simples aplicação onde os usuários podem inserir seu nome e clicar em um botão para exibir um cumprimento personalizado.
import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk class MyApp(Gtk.Window): def __init__(self): Gtk.Window.__init__(self, title="User Input App") self.set_size_request(400, 200) # Create a vertical box layout vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10) self.add(vbox) # Create an Entry widget for user input self.entry = Gtk.Entry() self.entry.set_placeholder_text("Enter your name") vbox.pack_start(self.entry, True, True, 0) # Create a button button = Gtk.Button(label="Submit") button.connect("clicked", self.on_button_clicked) vbox.pack_start(button, True, True, 0) # Create a label to display the greeting self.label = Gtk.Label(label="") vbox.pack_start(self.label, True, True, 0) def on_button_clicked(self, widget): name = self.entry.get_text() if name: self.label.set_text(f"Hello, {name}!") else: self.label.set_text("Please enter your name.") # Initialize the application app = MyApp() app.connect("destroy", Gtk.main_quit) app.show_all() Gtk.main()
Explicação do Código:
- O
Gtk.Entry
é um campo de entrada onde os usuários podem digitar o seu nome. - O método
set_placeholder_text
mostra um texto de apoio dentro do campo de entrada até que o usuário digite alguma coisa. - Depois de clicar no botão, o nome inserido é recuperado usando
get_text()
e exibido no rótulo como uma saudação personalizada.

3. Estilizando Sua Aplicação com CSS
O PyGObject permite que você aplique estilos personalizados aos widgets da sua aplicação usando um arquivo CSS chamado style.css
.
window { background-color: #f0f0f0; } button { background-color: #4CAF50; color: white; border-radius: 5px; padding: 10px; } label { font-size: 16px; color: #333; }
Agora, modifique o código Python para carregar e aplicar este arquivo CSS:
import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk, Gdk class MyApp(Gtk.Window): def __init__(self): Gtk.Window.__init__(self, title="Styled GUI App") self.set_size_request(400, 200) # Load CSS css_provider = Gtk.CssProvider() css_provider.load_from_path("style.css") screen = Gdk.Screen.get_default() style_context = Gtk.StyleContext() style_context.add_provider_for_screen(screen, css_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER) # Create a vertical box layout vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10) self.add(vbox) # Create an Entry widget for user input self.entry = Gtk.Entry() self.entry.set_placeholder_text("Enter your name") vbox.pack_start(self.entry, True, True, 0) # Create a button button = Gtk.Button(label="Submit") button.connect("clicked", self.on_button_clicked) vbox.pack_start(button, True, True, 0) # Create a label to display the greeting self.label = Gtk.Label(label="") vbox.pack_start(self.label, True, True, 0) def on_button_clicked(self, widget): name = self.entry.get_text() if name: self.label.set_text(f"Hello, {name}!") else: self.label.set_text("Please enter your name.") # Initialize the application app = MyApp() app.connect("destroy", Gtk.main_quit) app.show_all() Gtk.main()
Explicação das Alterações no CSS:
- O botão tem um fundo verde, e os rótulos têm um tamanho e cor de fonte personalizados.
- As bordas do botão são arredondadas para um visual moderno.

Conclusão
PyGObject é uma ferramenta poderosa para criar aplicações GUI na área de trabalho Linux usando Python. Aproveitando a flexibilidade e simplicidade do Python juntamente com os recursos ricos do GTK, os desenvolvedores podem criar aplicações ricas em recursos e visualmente atraentes.
Neste guia, cobrimos os fundamentos da configuração do PyGObject, criação de uma janela simples, manipulação de cliques de botão, adição de entrada do usuário e até mesmo aplicação de estilos CSS personalizados.
Você pode estender esses exemplos para construir aplicações mais complexas, como gerenciadores de arquivos, reprodutores de mídia ou até mesmo software de nível profissional. Com PyGObject e GTK, as possibilidades para criar aplicações de desktop são quase ilimitadas!
Source:
https://www.tecmint.com/pygobject-create-python-gui-application-linux/