Como criar interfaces gráficas com Python, PyGObject e GTK

Toolkit gráfico GTK.

Hoje veremos como criar uma interface gráfica utilizando a linguagem de programação Python, o binding PyGObject e o tookit gráfico GTK.

Sobre o GTK

GTK é um toolkit de desenvolvimento de interface gráfica do usuário (GUI – Graphical User Interface) multiplataforma, escrito na linguagem de programação C.

A sigla GTK significa GIMP Toolkit, foi originalmente desenvolvido como parte do software de edição de imagens GIMP (GNU Image Manipulation Program), mas agora é usado em muitos outros projetos.

O GTK foi lançado pela primeira vez em 1998 como parte do GIMP 1.2 e se tornou um projeto independente em 1999, com a versão 1.0. Desde então, o GTK tem sido usado para desenvolver muitos outros aplicativos, como o GNOME (GNU Network Object Model Environment), um ambiente de desktop popular para sistemas Linux.

O GTK é escrito em C e é distribuído sob a Licença Pública Geral GNU LGPL, que permite seu uso e distribuição livre e gratuita.

Ele também possui bindings para outras linguagens de programação:

Essas são as linguagens suportadas oficialmente, contudo existem bindings não oficiais.


Bibliotecas

O kit de ferramentas (toolkit) GTK tem um design modular, entre suas principais bibliotecas temos e módulos temos:

GTK

A biblioteca GTK constrói o núcleo do kit de ferramentas e contém todos os widgets.

GDK

GDK fornece uma interface para desenhar gráficos em uma variedade de plataformas, incluindo X11, Wayland, Microsoft Windows e macOS. Ele oferece suporte a recursos como janelas, eventos, gráficos 2D, imagens e manipulação de cores.

GdkPixbuf

A biblioteca GdkPixbuf permite o carregamento e manipulação de imagens (PNG, JPEG, GIF e etc).

GObject

A biblioteca GObject fornece uma API para programação orientada a objetos (OOP) na linguagem de programação C.

GLib

GLib é uma biblioteca de baixo nível que forma a base do GTK.

Ele fornece manipulação de estrutura de dados para C, wrappers de portabilidade e interfaces para funcionalidade de tempo de execução como um loop de eventos, threads, carregamento dinâmico e um sistema de objetos.

GIO

A biblioteca GIO implementa suporte a operações de entrada e saída (I/O, networking, IPC e etc).

GSK

A bliblioteca GSK é utilizada para otimizar o desenho e a atualização do widget.

Graphene

A biblioteca Graphene implementa o suporte a gráficos, vetores e matrizes.

ATK

A biblioteca ATK implementa o suporte a leitores de tela, ampliadores de texto (lupas) e dispositivos de entrada alternativos.

Cairo

Cairo é uma biblioteca para gráficos 2D com suporte para vários dispositivos de saída (incluindo o X Window System, Win32) ao mesmo tempo em que produz uma saída consistente em todas as mídias, aproveitando a aceleração do hardware de exibição quando disponível.

pango

Pango é uma biblioteca para layout e renderização de texto com ênfase na internacionalização. Ele forma o núcleo do manuseio de texto e fonte para GTK.

OpenGL e Vulkan

As bibliotecas OpenGL e Vulkan permitem a utilização da GPU.

Para sistemas Linux, existe mais uma camada de abstração entre o kit de ferramentas GTK e o hardware do computador, chamada Wayland.

Wayland é um protocolo de comunicação que especifica a comunicação entre um servidor de exibição e seus clientes, bem como uma implementação da biblioteca C desse protocolo. Alguns sistemas Linux mais antigos ainda podem usar, em vez do moderno Wayland, o legado X Window System, que às vezes era chamado apenas de X11 ou X.


Sobre a biblioteca libadwaita

A biblioteca libadwaita é uma biblioteca de interface do usuário para o desenvolvimento de aplicativos GNOME, que foi introduzida com o GNOME 40. Ela fornece um conjunto de widgets e componentes para construir interfaces do usuário modernas e consistentes para aplicativos GNOME.

A libadwaita tem como objetivo fornecer um conjunto de diretrizes de design e estilo para aplicativos GNOME. Ela inclui um conjunto de widgets que seguem essas diretrizes e um tema de estilo que pode ser aplicado a toda a interface do usuário do aplicativo.

A biblioteca também fornece recursos para garantir que os aplicativos sejam acessíveis e utilizáveis em dispositivos móveis e desktops, bem como recursos para lidar com idiomas e scripts da direita para a esquerda.

A libadwaita é uma parte importante do esforço do GNOME para fornecer uma experiência de usuário consistente e coesa em todo o sistema operacional GNOME e seus aplicativos. É projetada para ser fácil de usar para os desenvolvedores, permitindo que eles criem interfaces do usuário atraentes e funcionais sem precisar se preocupar muito com detalhes de implementação.


Bônus

GTK

Libadwaita

GNOME

Desenvolvimento

Softwares

Flatpak

Visual Studio Code