Skip to content

Repository created to document and centralize content, tips, tutorials and code examples on building interfaces with the Python programming language (PyGObject) and the Gtk 4 graphic toolkit.

License

Notifications You must be signed in to change notification settings

ag-python/gui-python-pygobject-gtk4

 
 

Repository files navigation

Criando interfaces gráficas com Python (PyGObject) e Gtk 4


natorsc - gui-python-pygobject-gtk4stars - gui-python-pygobject-gtk4forks - gui-python-pygobject-gtk4

License MIT

Criando interfaces gráficas com Python (PyGObject) e Gtk 4

📝 Descrição

Repositório criado para documentar e centralizar conteúdos, dicas, tutoriais e exemplos de código sobre a construção de interfaces gráficas com a linguagem de programação Python (PyGObject) e o toolkit gráfico Gtk 4.


🛠 Tecnologias utilizadas

Até o presente momento as seguintes tecnologias estão sendo utilizadas na construção do projeto:

PythonPyGObjectGtkGnomeFlatpak


🤓 Autor

Feito com 💙 por Renato Cruz 🤜🤛 Entre em contato!

E-mailLinkedIn

Uma das playlist que costumo ouvir quando estou estudando ou "codando" 😁:

Spotify

Sempre que possível escrevo tutoriais no meu blog pessoal 🚀:

Blog


💝 Doações

Ko-Fi

Ko-Fi

Pix

drawing

Chave: b1839493-2afe-484d-9272-82a3e402b36f


🎓 Tutoriais


🔗 Links uteis

Documentação

Softwares


RADs

  • Gnome Glade. Não é mais recomendado para o desenvolvimento com Gtk 4:

    Gnome Glade




IDEs


Icons


Sobre o Gtk

O GTK é um toolkit multiplataforma para a criação de interfaces gráficas.

O mesmo utiliza licença GNU LGPL, o que permite a sua utilização para construção de softwares que sejam livres ou proprietários.

Foi desenvolvido inicialmente para o GIMP (GNU Image Manipulation Program), por isso foi batizado de GIMP Toolkit ou simplesmente GTK.

Originalmente criado por, Peter Mattis, Spencer Kimball e Josh MacDonald.

O GTK é comumente utilizado na elaboração de aplicativos para o ambiente de desktop GNOME, contudo por ser multiplataforma pode ser executado sem problemas em diversos sistemas operacionais e ambientes gráficos.

O toolkit é escrito em C e o seu design é orientado a objeto com base no sistema de objetos da biblioteca GLib.

Existe o suporte a diversas linguagens de programação (bindings), contudo as linguagem que são suportadas oficialmente (até o momento que escrevo) são:

Sempre que possível de preferencia por iniciar um projeto utilizando o Gnome Builder.

🚨 O Gnome Builder não está disponível para Microsoft Windows.


Gtk 4

O GTK 4 foi lançado em 16 de dezembro 2020.

No GTK 4 é desencorajado o uso do Gnome Glade, isso porque o Gnome Builder fornece uma forma padronizada e moderna de se criar e gerenciar os projetos.

Arquitetura

Arquitetura do GTK 4

bibliotecas:

GLib é uma biblioteca central 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.

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.

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.

GdkPixbuf é uma biblioteca para carregar ativos gráficos como ícones em vários formatos, como PNG, JPEG e GIF.

ATK é uma biblioteca para um conjunto de interfaces que fornecem acessibilidade. Ao suportar as interfaces ATK, um aplicativo ou kit de ferramentas pode ser usado com ferramentas como leitores de tela, ampliadores e dispositivos de entrada alternativos.


Gtk 4 estilos

Até o presente momento o Gtk 4 permite a utilização de 2 estilos no desenvolvimneto de aplicativos.

Aplicativo do Gnome

Python e GTK 4: PyGObject Gtk.actionbar() Adw.init().

Para utilizar este estilo deve-se adicionar no código Adw.init().

🚨 Ao se utilizar a biblioteca libadwaita juntamente com arquivos de interface (*.ui) é obrigatório o uso de Adw.init() no código.

Caso não seja utilizado é exibido o erro: Error building template class '' for an instance of type '': .:0:0 Invalid object type ''.

Aplicativo Gtk 4

Python e GTK 4: PyGObject Gtk.actionbar().

Este é o estilo padrão e para utilizar o mesmo não adicione Adw.init() no código.


Gtk 4 Blueprint

Instalação

Flatpak

Se estiver utilizando o Gnome Builder basta adicionar o seguinte código no arquivo de manifesto que fica na raiz do projeto (*.json):

{
  "name": "blueprint-compiler",
  "buildsystem": "meson",
  "sources": [
    {
      "type": "git",
      "url": "https://gitlab.gnome.org/jwestman/blueprint-compiler",
      "branch": "main"
    }
  ]
}

Instalação manual

Dependências

Debian, Ubuntu e derivados:

sudo apt install \
meson \
ninja-build

Fedora, Centos, RHEL e derivados:

sudo dnf install \
meson \
ninja-build

Arch

sudo pacman -S \
meson

Após realizar a instalação das dependências clone o repositório do blueprint-compiler:

git clone https://gitlab.gnome.org/jwestman/blueprint-compiler.git

Acesse a pasta que foi clonada:

cd blueprint-compiler

Ao acessar a pasta execute:

meson _build

Por fim execute:

ninja -C _build

Sintaxe

Converter arquivos do projeto de *.ui para *.blp:

blueprint-compiler port

📝 comando deve ser executádo na raiz do projeto. Um shell interativo será iniciado.

Gerar arquivo de *.ui a partir de um arquivo *.blp:

blueprint-compiler compile MainWindow.blp --output MainWindow.ui

Extensões


💻 Gtk 4 Widgets

Python e GTK 4: PyGObject Gtk.ApplicationWindow().

🚜 Em construção 🚧.


💻 Gtk 4 Widgets

Python e GTK 4: PyGObject libadwaita Adw.Flap()

🚜 Em construção 🚧.

A libadwaita deve estar disponível a partir do Gnome 41 ou 42, a mesma vem para substituir a biblioteca libhandy.

🚨 Ao se utilizar a biblioteca libadwaita juntamente com arquivos de interface (*.ui) é obrigatório o uso de Adw.init() no código.

Caso não seja utilizado é exibido o erro: Error building template class '' for an instance of type '': .:0:0 Invalid object type ''.

Gtk 4 Libadwaita widgets


Gtk 4 Libadwaita Classes de estilo

Python e GTK 4: PyGObject libadwaita style class colors

🚨 Ao se utilizar a biblioteca libadwaita juntamente com arquivos de interface (*.ui) é obrigatório o uso de Adw.init() no código.

Caso não seja utilizado é exibido o erro: Error building template class '' for an instance of type '': .:0:0 Invalid object type ''.

📝 Para que o estilo visual seja aplicado de forma correta utilize Adw.init() no código.


💡 Extra

Poetry

requirements.txt

Para gerar o arquivo de dependências requirements.txt através do Poetry utilizar o comando:

poetry export \
--without-hashes \
-f requirements.txt \
-o requirements.txt

requirements-dev.txt

Para gerar um arquivo que possua também as dependências de desenvolvimento (requirements-dev.txt):

poetry export \
--dev \
--without-hashes \
-f requirements.txt \
-o requirements-dev.txt

About

Repository created to document and centralize content, tips, tutorials and code examples on building interfaces with the Python programming language (PyGObject) and the Gtk 4 graphic toolkit.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.5%
  • HTML 0.5%