Criar aplicações de interface gráfica (GUI) é uma forma fantástica de trazer suas ideias à vida e tornar seus programas mais amigáveis para o usuário.
PyGObject é uma biblioteca de Python que permite que desenvolvedores criem aplicações de GUI no ambiente de desktop Linux usando a framework GTK (GIMP Toolkit). O GTK é amplamente usado em ambientes Linux, fornecendo poder a muitas populares aplicações desktop como o Gedit, o terminal GNOME, e muito mais.
Neste artigo, nós exploraremos como criar aplicações de GUI em um ambiente de desktop Linux usando o PyGObject. Vamos começar entendendo o que é o PyGObject, como instalá-lo, e então prosseguir para construir uma simples aplicação de GUI.
Passo 1: Instalar Python e GTK no Linux
Para trabalhar com o 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 a seguir 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, você pode agora 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 aplicativos de interface gráfica usando PyGObject e GTK.
Criando a Primeira Aplicação de Interface Gráfica com PyGObject no Linux
Agora, vamos construir um aplicativo PyGObject simples que exibe uma janela com um botão. Quando o botão é clicado, ele exibirá a mensagem “}Hello, World!“.
Crie um arquivo Python chamado app.py
, e vamos começar a escrever a estrutura básica do nosso aplicativo 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 PyGObject necessários. 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 do aplicativo. - Nós criamos um botão usando
Gtk.Button
, e o rótulo do botão é definido como “}Clique em Mim“. Também conectamos o sinal do botão “clicked” ao métodoon_button_clicked
, que imprime “}Hello, World!” quando clicado. - O loop principal do aplicativo é iniciado chamando
Gtk.main()
. Esse loop espera por eventos (como cliques) e atualiza o aplicativo conforme necessário.
Para executar a aplicação, navegue até o diretório onde você salvou o arquivo app.py
e execute o seguinte comando:
python3 app.py
Uma janela aparecerá com um botão rotulado “Clique Aqui“. Quando você clicar no botão, “Olá, Mundo!” será impresso no terminal.

Adicionando mais recursos à sua aplicação PyGObject
Agora vamos expandir nossa aplicação adicionando mais widgets e interatividade.
1. Adicionando uma Rótulo
Podemos aprimorar nossa aplicação adicionando um Gtk.Label
para exibir mensagens na janela em vez de imprimir 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:
- Usamos
Gtk.Box
para organizar os widgets verticalmente, o que nos ajuda a arrumar o rótulo e o botão um após o outro. - O widget
Gtk.Label
é adicionado para exibir uma mensagem dentro da janela. - Em vez de imprimir no terminal, a função
on_button_clicked
agora atualiza o texto do rótulo.

2. Adicionando Campos de Entrada para Entrada do Usuário
Próximo, vamos adicionar widgets Gtk.Entry
para permitir entrada do usuário, o que nos permitirá criar uma aplicação simples onde os usuários podem inserir seus nomes e clicar em um botão para exibir uma saudação personalizada.
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 seu nome. - O método
set_placeholder_text
mostra uma dica dentro da caixa de entrada até que o usuário digite algo. - Após clicar no botão, o nome inserido é recuperado usando
get_text()
e exibido na etiqueta como um cumprimento personalizado.

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 mudanças no CSS:
- O botão agora tem um fundo verde e as etiquetas tem uma fonte personalizada de tamanho e cor.
- As bordas do botão são arredondadas para um aspecto moderno.

Conclusão
PyGObject é uma ferramenta poderosa para criar aplicações de interface gráfica (GUI) no ambiente de trabalho Linux usando o Python. Ao aproveitar a flexibilidade e simplicidade do Python, juntamente com as funcionalidades rica de GTK, os desenvolvedores podem criar aplicações com recursos abrangentes e de visual agradável.
Neste guia, nós abordamos os fundamentos de como configurar o PyGObject, criar uma janela simples, lidar com cliques de botão, adicionar entrada do usuário e até aplicar estilos CSS personalizados.
Você pode estender estes exemplos para construir aplicações mais complexas, como gerenciadores de arquivos, reprodutores de mídia, ou até software profissional. Com PyGObject e GTK, as possibilidades de criar aplicações desktop são quase ilimitadas!
Source:
https://www.tecmint.com/pygobject-create-python-gui-application-linux/