An open API service indexing awesome lists of open source software.

https://github.com/natorsc/py-gtk

Repository created to centralize tips, tutorials and code examples on building graphical interfaces with the Python programming language (PyGObject) and the GTK graphics tookit.
https://github.com/natorsc/py-gtk

furo gnome gtk gtk3 gtk4 pygobject python python-3 python3 sphinx sphinx-doc

Last synced: 25 days ago
JSON representation

Repository created to centralize tips, tutorials and code examples on building graphical interfaces with the Python programming language (PyGObject) and the GTK graphics tookit.

Awesome Lists containing this project

README

        

![Creating graphical interfaces with Python (PyGObject) and GTK](./docs/images/py-gtk.webp "Creating graphical interfaces with Python (PyGObject) and GTK")


[![natorsc - py-gtk](https://img.shields.io/static/v1?label=natorsc&message=py-gtk&color=blue&logo=github)](https://github.com/natorsc/py-gtk "Go to repository.")
โ€ƒ
[![stars - py-gtk](https://img.shields.io/github/stars/natorsc/py-gtk?style=social)](https://github.com/natorsc/py-gtk)
โ€ƒ
[![forks - py-gtk](https://img.shields.io/github/forks/natorsc/py-gtk?style=social)](https://github.com/natorsc/py-gtk)

[![License MIT](https://img.shields.io/static/v1?label=License&message=MIT&color=blue)](./LICENSE)

# Creating graphical interfaces with Python (PyGObject) and GTK

## ๐Ÿ“ Description

This repository is your go-to hub for tips, tutorials, and code examples on building stunning graphical interfaces with Python (PyGObject) and the GTK toolkit. Whether you're a beginner or an experienced developer, you'll find valuable resources to enhance your projects. If this content helps you, consider supporting the project with a donation to keep it growing!

---

## ๐Ÿ›  Technologies used

To date, the following technologies have been used to build the project:

[![Python](https://img.shields.io/badge/-Python-blue?logo=python&logoColor=white)](https://www.python.org/ "Go to the site.")
โ€ƒ
[![GTK](https://img.shields.io/badge/-GTK-blue?logo=gtk&logoColor=white)](https://www.gtk.org/ "Go to the site.")
โ€ƒ
[![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)

---

## ๐Ÿค“ Author

Crafted with ๐Ÿ’™ by Renato Cruz ๐Ÿคœ๐Ÿค› Got questions or feedback? Feel free to reach out!

[![Email](https://img.shields.io/badge/-Email-blueviolet?logo=gmail&logoColor=white)](mailto:[email protected] "Send an email.")

What Iโ€™m listening to while deep in study or code mode ๐Ÿ˜Ž๐ŸŽต:

[![Spotify](https://img.shields.io/badge/-Spotify-darkgreen?logo=spotify&logoColor=white)](https://open.spotify.com/playlist/1xf3u29puXlnrWO7MsaHL5?si=A-LgwRJXSvOno_e6trpi5w&utm_source=copy-link "Access the playlist.")

---

## ๐Ÿ’ Donations

Thank you for your donation! Your support helps me keep this content alive and growing ๐Ÿ˜Š.

### Github

https://github.com/sponsors/natorsc/

### Pix (Brazil)

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

---

## ๐Ÿ’ก Extra

### GTK

- [Documentation GTK 3](https://docs.gtk.org/gtk3/).
- [Documentation GTK 4](https://docs.gtk.org/gtk4/).

### Libadwaita

- [Documentation 1.x](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1-latest/).

### GNOME

- [Official website](https://www.gnome.org/).
- [Blog](https://blogs.gnome.org/).
- [GNOME Human Interface Guidelines (HIG)](https://wiki.gnome.org/Design/HIG).

### Development

- [GNOME Builder](https://apps.gnome.org/pt-BR/app/org.gnome.Builder/).
- [Workbench](https://apps.gnome.org/pt-BR/app/re.sonny.Workbench/).
- [Cambalache](https://flathub.org/pt-BR/apps/ar.xjuan.Cambalache).
- [Icon Library](https://flathub.org/apps/details/org.gnome.design.IconLibrary).
- [Typography](https://flathub.org/apps/details/org.gnome.design.Typography).
- [App Icon Preview](https://flathub.org/apps/details/org.gnome.design.AppIconPreview).
- [Symbolic Preview](https://flathub.org/apps/details/org.gnome.design.SymbolicPreview).
- [Color Palette](https://flathub.org/apps/details/org.gnome.design.Palette).
- [Gnome icon library online](https://teams.pages.gitlab.gnome.org/Design/icon-development-kit-www/).

### Softwares

- [GNOME Apps](https://apps.gnome.org/pt-BR/).
- [GNOME circle](https://circle.gnome.org/).
- [Awesome GTK](https://github.com/valpackett/awesome-gtk).

### Flatpak

- [Official website](https://www.flatpak.org/).
- [Flathub](https://flathub.org/).

### Visual Studio Code

- [Gnome Magic (bedsteler20)](https://marketplace.visualstudio.com/items?itemName=bedsteler20.gnome-magic).
- [GTK Blueprint (Bodil Stokke)](https://marketplace.visualstudio.com/items?itemName=bodil.blueprint-gtk).
- [Flatpak (Bilal Elmoussaoui)](https://marketplace.visualstudio.com/items?itemName=bilelmoussaoui.flatpak-vscode).

---

## Widgets

### GTK

#### Gtk.ActionBar

![Gtk.ActionBar](./docs/images/gtk-widgets/actionbar.webp "Gtk.ActionBar")

- [Python](./src/gtk-widgets/actionbar/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/actionbar/ui/MainWindow.blp).

---

#### Gtk.Application

![Gtk.Application](./docs/images/gtk-widgets/application.webp "Gtk.Application")

- [Python](./src/gtk-widgets/application/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/application/ui).

---

#### Gtk.ApplicationWindow

![Gtk.ApplicationWindow](./docs/images/gtk-widgets/application-window.webp "Gtk.ApplicationWindow")

- [Python](./src/gtk-widgets/application-window/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/application-window/ui).

---

#### Gtk.Box (horizontal)

![Gtk.Box (horizontal)](./docs/images/gtk-widgets/box-horizontal.webp "Gtk.Box (horizontal)")

- [Python](./src/gtk-widgets/box-horizontal/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/box-horizontal/ui).

---

#### Gtk.Box (vertical)

![Gtk.Box (vertical)](./docs/images/gtk-widgets/box-vertical.webp "Gtk.Box (vertical)")

- [Python](./src/gtk-widgets/box-vertical/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/box-vertical/ui).

---

#### Gtk.Button

![Gtk.Button](./docs/images/gtk-widgets/button.webp "Gtk.Button")

- [Python](./src/gtk-widgets/button/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/button/ui).

---

#### Gtk.Calendar

![Gtk.Calendar](./docs/images/gtk-widgets/calendar.webp "Gtk.Calendar")

- [Python](./src/gtk-widgets/calendar/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/calendar/ui).

---

#### Gtk.CheckButton

![Gtk.CheckButton](./docs/images/gtk-widgets/check-button.webp "Gtk.CheckButton")

- [Python](./src/gtk-widgets/check-button/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/check-button/ui).

---

#### Gtk.CheckButton (radio)

![Gtk.CheckButton (radio)](./docs/images/gtk-widgets/check-button-radio.webp "Gtk.CheckButton (radio)")

- [Python](./src/gtk-widgets/check-button-radio/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/check-button-radio/ui).

---

#### Gtk.ColorDialogButton

![Gtk.ColorDialogButton](./docs/images/gtk-widgets/color-dialog-button.webp "Gtk.ColorDialogButton")

- [Python](./src/gtk-widgets/color-dialog-button/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/color-dialog-button/ui).

---

#### Drag and drop

![Gtk.Drag and drop](./docs/images/gtk-widgets/drag-and-drop.webp "Gtk.Drag and drop")

- [Python](./src/gtk-widgets/drag-and-drop/MainWindow.py).

---

#### Gtk.DropDown

![Gtk.DropDown](./docs/images/gtk-widgets/drop-down.webp "Gtk.DropDown")

- [Python](./src/gtk-widgets/drop-down/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/drop-down/ui).

---

#### Gtk.Entry

![Gtk.Entry](./docs/images/gtk-widgets/entry.webp "Gtk.Entry")

- [Python](./src/gtk-widgets/entry/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/entry/ui).

---

#### Gtk.FileDialog (folder)

![Gtk.FileDialog (folder)](./docs/images/gtk-widgets/file-dialog-folder.webp "Gtk.FileDialog (folder)")

- [Python](./src/gtk-widgets/file-dialog-folder/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/file-dialog-folder/ui).

---

#### Gtk.FileDialog (open)

![Gtk.FileDialog (open)](./docs/images/gtk-widgets/file-dialog-open.webp "Gtk.FileDialog (open)")

- [Python](/src/gtk-widgets/file-dialog-open/MainWindow.py).
- [GTK Blueprint](/src/gtk-widgets/file-dialog-open/ui).

---

#### Gtk.FileDialog (save)

![Gtk.FileDialog (save)](./docs/images/gtk-widgets/file-dialog-save.webp "Gtk.FileDialog (save)")

- [Python](./src/gtk-widgets/file-dialog-save/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/file-dialog-save/ui).

---

#### Gtk.Fixed

![Gtk.Fixed](./docs/images/gtk-widgets/fixed.webp "Gtk.Fixed")

- [Python](./src/gtk-widgets/fixed/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/fixed/ui).

---

#### Gtk.FlowBox

![Gtk.FlowBox](./docs/images/gtk-widgets/flow-box.webp "Gtk.FlowBox")

- [Python](./src/gtk-widgets/flow-box/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/flow-box/ui).

---

#### Gtk.Grid

![Gtk.Grid](./docs/images/gtk-widgets/grid.webp "Gtk.Grid")

- [Python](./src/gtk-widgets/grid/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/grid/ui).

---

#### Gtk.HeaderBar

![Gtk.ApplicatHeaderBarion](./docs/images/gtk-widgets/header-bar.webp "Gtk.HeaderBar")

- [Python](./src/gtk-widgets/header-bar/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/header-bar/ui).

---

#### Gtk.Image

![Gtk.Image](./docs/images/gtk-widgets/image.webp "Gtk.Image")

- [Python](./src/gtk-widgets/image/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/image/ui).

---

#### Gtk.ListBox

![Gtk.ListBox](./docs/images/gtk-widgets/list-box.webp "Gtk.ListBox")

- [Python](./src/gtk-widgets/list-box/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/list-box/ui).

---

#### Gtk.ListView

![Gtk.ListView](./docs/images/gtk-widgets/list-view.webp "Gtk.ListView")

> ๐Ÿšจ Criar cรณdigo Python.

- [Python](#gtklistview).
- [GTK Blueprint](./src/gtk-widgets/list-view/ui).

---

#### Gtk.MenuButton

![Gtk.MenuButton](./docs/images/gtk-widgets/menu-button.webp "Gtk.MenuButton")

- [Python](./src/gtk-widgets/menu-button/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/menu-button/ui).

---

#### Gtk.Overlay

![Gtk.Overlay](./docs/images/gtk-widgets/overlay.webp "Gtk.Overlay")

- [Python](./src/gtk-widgets/overlay/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/overlay/ui).

---

Pango tags
==========

![Gtk.Pango tags](./docs/images/gtk-widgets/pango-tags.webp "Gtk.Pango tags")

- [Python](./src/gtk-widgets/pango-tags/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/pango-tags/ui).

---

#### Gtk.Picture

![Gtk.Picture](./docs/images/gtk-widgets/picture.webp "Gtk.Picture")

- [Python](./src/gtk-widgets/picture/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/picture/ui).

---

#### Gtk.PrintOperation

![Gtk.PrintOperation](./docs/images/gtk-widgets/print-operation.webp "Gtk.PrintOperation")

- [Python](./src/gtk-widgets/print-operation/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/print-operation/ui).

---

#### Gtk.SearchBar

![Gtk.SearchBar](./docs/images/gtk-widgets/search-bar.webp "Gtk.SearchBar")

- [Python](./src/gtk-widgets/search-bar/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/search-bar/ui).

---

#### Gtk.ShortcutsWindow

![Gtk.ShortcutsWindow](./docs/images/gtk-widgets/shortcuts-window.webp "Gtk.ShortcutsWindow")

> ๐Ÿšจ Criar cรณdigo Python.

- [GTK Blueprint](./src/gtk-widgets/shortcuts-window/ui).

---

#### Signals and slots

![Signals and slots](./docs/images/gtk-widgets/signals-and-slots.webp "Signals and slots")

- [Python](./src/gtk-widgets/signals-and-slots/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/signals-and-slots/ui).

---

#### Gtk.StackSidebar

![Gtk.StackSidebar](./docs/images/gtk-widgets/stack-sidebar.webp "Gtk.StackSidebar")

- [Python](./src/gtk-widgets/stack-sidebar/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/stack-sidebar/ui).

---

#### Gtk.StackSwitcher

![Gtk.StackSwitcher](./docs/images/gtk-widgets/stack-switcher.webp "Gtk.StackSwitcher")

- [Python](./src/gtk-widgets/stack-switcher/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/stack-switcher/ui).

---

#### Gtk.Switch

![Gtk.Switch](./docs/images/gtk-widgets/switch.webp "Gtk.Switch")

- [Python](./src/gtk-widgets/switch/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/switch/ui).

---

#### Translation (gettext)

![Gtk.Translation (gettext)](./docs/images/gtk-widgets/ "Gtk.Translation (gettext)")

> ๐Ÿšจ Revisar.

- [Python](./src/gtk-widgets/translator-gettext/MainWindow.py).

---

#### Gtk.Video

![Gtk.Video](./docs/images/gtk-widgets/video.webp "Gtk.Video")

- [Python](./src/gtk-widgets/video/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/video/ui).

---

#### Gtk.Window

![Gtk.Window](./docs/images/gtk-widgets/window.webp "Gtk.Window")

- [Python](./src/gtk-widgets/window/MainWindow.py).
- [GTK Blueprint](./src/gtk-widgets/window/ui).

---


### Libadwaita

#### Adw.AboutDialog

![Adw.AboutDialog](./docs/images/libadwaita-widgets/about-dialog.png "Adw.AboutDialog")

- [Python](./src/libadwaita-widgets/about-dialog/MainWindow.py).
- [GTK Blueprint](./src/libadwaita-widgets/about-dialog/ui).

---

#### Adw.ActionRow

![Adw.ActionRow](./docs/images/libadwaita-widgets/action-row.webp "Adw.ActionRow")

- [Python](./src/libadwaita-widgets/action-row/MainWindow.py).
- [GTK Blueprint](./src/libadwaita-widgets/action-row/ui).

---

#### Adw.Application

![Adw.Application](./docs/images/libadwaita-widgets/application.webp "Adw.Application")

- [Python](./src/libadwaita-widgets/application/MainWindow.py).
- [GTK Blueprint](./src/libadwaita-widgets/application/ui).

---

#### Adw.Avatar

![Adw.Avatar](./docs/images/libadwaita-widgets/avatar.webp "Adw.Avatar")

- [Python](./src/libadwaita-widgets/avatar/MainWindow.py).
- [GTK Blueprint](./src/libadwaita-widgets/avatar/ui).

---

#### Adw.Banner

![Adw.Banner](./docs/images/libadwaita-widgets/banner.webp "Adw.Banner")

- [Python](./src/libadwaita-widgets/banner/MainWindow.py).
- [GTK Blueprint](./src/libadwaita-widgets/banner/ui).

---

#### Adw.ButtonContent

![Adw.ButtonContent](./docs/images/libadwaita-widgets/button-content.webp "Adw.ButtonContent")

- [Python](./src/libadwaita-widgets/button-content/MainWindow.py).
- [GTK Blueprint](./src/libadwaita-widgets/button-content/ui).

---

#### Adw.Carousel

![Adw.Carousel](./docs/images/libadwaita-widgets/carousel.webp "Adw.Carousel")

- [Python](./src/libadwaita-widgets/carousel/MainWindow.py).
- [GTK Blueprint](./src/libadwaita-widgets/carousel/ui).

---

#### Adw.CarouselIndicatorDots

![Adw.CarouselIndicatorDots](./docs/images/libadwaita-widgets/carousel-indicator-dots.webp "Adw.CarouselIndicatorDots")

- [Python](./src/libadwaita-widgets/carousel-indicator-dots/MainWindow.py).
- [GTK Blueprint](./src/libadwaita-widgets/carousel-indicator-dots/ui).

---

#### Adw.CarouselIndicatorLines

![Adw.CarouselIndicatorLines](./docs/images/libadwaita-widgets/carousel-indicator-lines.webp "Adw.CarouselIndicatorLines")

- [Python](./src/libadwaita-widgets/carousel-indicator-lines/MainWindow.py).
- [GTK Blueprint](./src/libadwaita-widgets/carousel-indicator-lines/ui).

---

#### Adw.Clamp

![Adw.Clamp](./docs/images/libadwaita-widgets/clamp.webp "Adw.Clamp")

- [Python](./src/libadwaita-widgets/clamp/MainWindow.py).
- [GTK Blueprint](./src/libadwaita-widgets/clamp/ui).

---

#### Adw.ComboRow

![Adw.ComboRow](./docs/images/libadwaita-widgets/combo-row.webp "Adw.ComboRow")

- [Python](./src/libadwaita-widgets/combo-row/MainWindow.py).
- [GTK Blueprint](./src/libadwaita-widgets/combo-row/ui).

---

#### Adw.EntryRow

![Adw.EntryRow](./docs/images/libadwaita-widgets/entry-row.webp "Adw.EntryRow")

- [Python](./src/libadwaita-widgets/entry-row/MainWindow.py).
- [GTK Blueprint](./src/libadwaita-widgets/entry-row/ui).

---

#### Adw.ExpanderRow

![Adw.ExpanderRow](./docs/images/libadwaita-widgets/expander-row.webp "Adw.ExpanderRow")

- [Python](./src/libadwaita-widgets/expander-row/MainWindow.py).
- [GTK Blueprint](./src/libadwaita-widgets/expander-row/ui).

---

#### Adw.MessageDialog

![Adw.MessageDialog](./docs/images/libadwaita-widgets/message-dialog.webp "Adw.MessageDialog")

- [Python](./src/libadwaita-widgets/message-dialog/MainWindow.py).
- [GTK Blueprint](./src/libadwaita-widgets/message-dialog/ui).

---

#### Adw.NavigationSplitView

![Adw.NavigationSplitView](./docs/images/libadwaita-widgets/navigation-split-view.png "Adw.NavigationSplitView")

- [Python](./src/libadwaita-widgets/navigation-split-view/MainWindow.py).
- [GTK Blueprint](./src/libadwaita-widgets/navigation-split-view/ui).

---

#### Adw.NavigationView

![Adw.NavigationView](./docs/images/libadwaita-widgets/navigation-view.png "Adw.NavigationView")

- [Python](./src/libadwaita-widgets/navigation-view/MainWindow.py).
- [GTK Blueprint](./src/libadwaita-widgets/navigation-view/ui).

---

#### Adw.PasswordEntryRow

![Adw.PasswordEntryRow](./docs/images/libadwaita-widgets/password-entry-row.webp "Adw.PasswordEntryRow")

- [Python](./src/libadwaita-widgets/password-entry-row/MainWindow.py).
- [GTK Blueprint](./src/libadwaita-widgets/password-entry-row/ui).

---

#### Adw.PreferencesPage

![Adw.PreferencesPage](./docs/images/libadwaita-widgets/preferences-page.webp "Adw.PreferencesPage")

- [Python](./src/libadwaita-widgets/preferences-page/MainWindow.py).
- [GTK Blueprint](./src/libadwaita-widgets/preferences-page/ui).

---

#### Adw.PreferencesWindow

![Adw.PreferencesWindow](./docs/images/libadwaita-widgets/preferences-window.webp "Adw.PreferencesWindow")

- [Python](./src/libadwaita-widgets/preferences-window/MainWindow.py).
- [GTK Blueprint](./src/libadwaita-widgets/preferences-window/ui).

---

#### Adw.SplitButton

![Adw.SplitButton](./docs/images/libadwaita-widgets/split-button.webp "Adw.SplitButton")

- [Python](./src/libadwaita-widgets/split-button/MainWindow.py).
- [GTK Blueprint](./src/libadwaita-widgets/split-button/ui).

---

#### Adw.StatusPage

![Adw.StatusPage](./docs/images/libadwaita-widgets/status-page.webp "Adw.StatusPage")

- [Python](./src/libadwaita-widgets/status-page/MainWindow.py).
- [GTK Blueprint](./src/libadwaita-widgets/status-page/ui).

--

#### Adw.Toast

![Adw.Toast](./docs/images/libadwaita-widgets/toast.webp "Adw.Toast")

- [Python](./src/libadwaita-widgets/toast/MainWindow.py).
- [GTK Blueprint](./src/libadwaita-widgets/toast/ui).

---

#### Adw.ToolbarView

> Todo: GTK Blueprint.

![Adw.ToolbarView](./docs/images/libadwaita-widgets/toolbar-view.webp "Adw.ToolbarView")

- [Python](./src/libadwaita-widgets/toolbar-view/MainWindow.py).

---

#### Adw.ViewStack

![Adw.ViewStack](./docs/images/libadwaita-widgets/view-stack.png "Adw.ViewStack")

- [Python](./src/libadwaita-widgets/view-stack/MainWindow.py).
- [GTK Blueprint](./src/libadwaita-widgets/view-stack/ui).