python-gtk-pygobject
                                
                                 python-gtk-pygobject copied to clipboard
                                
                                    python-gtk-pygobject copied to clipboard
                            
                            
                            
                        Repositório criado para centralizar 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 tookit gráfico GTK.

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:
🤓 Autor
Feito com 💙 por Renato Cruz 🤜🤛 Entre em contato!
Uma das playlist que costumo ouvir quando estou estudando ou "codando" 😁:
Sempre que possível escrevo tutoriais no meu blog pessoal 🚀:
💝 Doações
Ko-Fi
Pix
 
Chave: b1839493-2afe-484d-9272-82a3e402b36f
🎓 Tutoriais
- Python e Gtk 4: Preparando o ambiente de desenvolvimento no Linux.
- Python e Gtk 4: Preparando o ambiente de desenvolvimento no Windows.
- Como ativar a ferramenta de depuração interativa Gtk Inspector.
- Como instalar o aplicativo Gtk 4 icon browser.
- Python e Gtk 4: Conhecendo o IDE Gnome Builder.
- Python e Gtk 4: Classes de estilo utilizadas pelo Gtk 4 e libadwaita.
- Python e Gtk 4: Blueprint e blueprint-compiler.
🔗 Links uteis
Ferramentas de Build e empacotamento
Melhor forma de distribuir ainda é utilizando Gnome Builder + Flatpak 💙.
Documentação
- Documentação Gtk 4.
- Documentação libadwaita.
- Guia para desenvolvedores.
- GNOME Human Interface Guidelines.
Softwares
RADs
- 
Gnome Glade. Não é mais recomendado para o desenvolvimento com Gtk 4:  
- 
Cambalache (Em desenvolvimento):  
- 
Gnome Drafting (Em desenvolvimento):  
IDEs
Icons
Deprecated (descontinuado)
- Criando interfaces gráficas com Python (PyGObject) e Gtk 3.
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

bibliotecas:
GLib
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
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
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
GdkPixbuf é uma biblioteca para carregar ativos gráficos como ícones em vários formatos, como PNG, JPEG e GIF.
ATK
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

Para utilizar este estilo deve-se adicionar no código Adw.init().
🚨 Ao se utilizar a biblioteca
libadwaitajuntamente com arquivos de interface (*.ui) é obrigatório o uso deAdw.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

Este é o estilo padrão e para utilizar o mesmo não adicione Adw.init() no código.
Gtk 4 Blueprint
Blueprint é uma nova linguagem de marcação para criação de interfaces gráficas com Gtk 4.
Um artigo sobre a linguagem de marcação e sobre o compilador foram adicionandos no blog, acesse a sessão tutoriais.
💻 Gtk 4 Widgets

🚜 Em construção 🚧.
- Gtk.ActionBar.
- Gtk.ApplicationWindow.
- Gtk.Box (horizontal).
- Gtk.Box (vertical).
- Gtk.Button.
- Gtk.Calendar.
- Gtk.CheckButton.
- Gtk.ColorButton.
- Gtk.ComboBoxText.
- Gtk.Dialog.
- Gtk.DragAndDrop (Gtk.DragSource e Gtk.DropTarget).
- Gtk.Entry.
- Gtk.EntryCompletion.
- Gtk.FileChooserDialog (folder).
- Gtk.FileChooserDialog (open).
- Gtk.FileChooserDialog (save).
- Gtk.Fixed.
- Gtk.FlowBox.
- Gtk.FontButton.
- Gtk.Grid.
- Gtk.HeaderBar.
- Gtk.Image.
- Gtk.InfoBar.
- Gtk.ListBox.
- Gtk.MenuButton.
- Gtk.Overlay.
- [Gtk.Pango].
- Gtk.Picture.
- Gtk.Popover.
- Gtk.PopoverMenu.
- [Gtk.PrintOperation].
- Gtk.RadioButton.
- Gtk.SearchBar.
- Gtk Signal e Slots.
- Gtk.StackSidebar.
- Gtk.StackSwitcher.
- Gtk Style add class.
- Gtk.Switch.
- Translator (gettext).
- Gtk.TreeView editable.
- Gtk.TreeView filter.
- Gtk.TreeView sort.
- Gtk.Video.
- Gtk.Window.
💻 Gtk 4 Widgets

🚜 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
libadwaitajuntamente com arquivos de interface (*.ui) é obrigatório o uso deAdw.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
- Adw.ActionRow.
- Adw.Application.
- Adw.Avatar.
- Adw.ButtonContent.
- Adw.Carousel.
- Adw.CarouselIndicatorDots.
- Adw.CarouselIndicatorLines.
- Adw.Clamp.
- Adw.ColorScheme (Dark mode).
- Adw.ComboRow.
- Adw.ExpanderRow.
- Adw.Flap.
- Adw.Leaflet.
- Adw.PreferencesPage.
- Adw.PreferencesWindow.
- Adw.SplitButton.
- Adw.StatusPage.
- Adw.Toast.
Gtk 4 Libadwaita Classes de estilo

🚨 Ao se utilizar a biblioteca
libadwaitajuntamente com arquivos de interface (*.ui) é obrigatório o uso deAdw.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.
- Gtk classe de estilo background.
- Gtk classe de estilo body.
- Gtk classe de estilo boxed-list.
- Gtk classe de estilo caption.
- Gtk classe de estilo card.
- Gtk classe de estilo circular.
- Gtk classe de estilo colors.
- Gtk classe de estilo compact.
- Gtk classe de estilo destructive-action.
- Gtk classe de estilo devel.
- Gtk classe de estilo dim-label.
- Gtk classe de estilo flat.
- Gtk classe de estilo flat-headerbar.
- Gtk classe de estilo frame.
- Gtk classe de estilo heading.
- Gtk classe de estilo icon-dropshadow.
- Gtk classe de estilo inline.
- Gtk classe de estilo linked.
- Gtk classe de estilo lowres-icon.
- Gtk classe de estilo menu.
- Gtk classe de estilo monospace.
- Gtk classe de estilo navigation-sidebar.
- Gtk classe de estilo numeric.
- Gtk classe de estilo opaque.
- Gtk classe de estilo pill.
- Gtk classe de estilo raised.
- Gtk classe de estilo selection-mode.
- Gtk classe de estilo spacer.
- Gtk classe de estilo suggested-action.
- Gtk classe de estilo title.
- Gtk classe de estilo toolbar.
- Gtk classe de estilo view.
💡 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

