GTK Python-GUI in Raspberry Pi 5

Posted

OS image:

Debian GNU/Linux 12 (bookworm) aarch64
Linux raspberrypi 6.6.62+rpt-rpi-2712 SMP PREEMPT Debian 1:6.6.62-1+rpt1 (2024-11-25)

Ref:

  1. https://www.gtk.org/docs/language-bindings/python/
  2. https://pygobject.gnome.org/getting_started.html#ubuntu-getting-started
  3. https://python-gtk-3-tutorial.readthedocs.io/en/latest/

Setup:

sudo apt update
sudo apt install libopenblas-dev libblas-dev m4 cmake python3-dev python3-yaml python3-setuptools
sudo apt install python3-gi python3-gi-cairo gir1.2-gtk-4.0
sudo apt install at-spi2-core
sudo rm /usr/lib/python3.*/EXTERNALLY-MANAGED
sudo pip install cython

First Run:

Create new pyscript and,

import gi
gi.require_version('Gtk','4.0')
from gi.repository import Gtk,Gdk,GLib
import threading
import time
import sys
class MyApp(Gtk.Application):
    def __init__(self):
        super().__init__(application_id="com.example.myapp")
        GLib.set_application_name("MyApp")  
        self.bgevt = threading.Event()
        self.bgthread = threading.Thread(target=loop_sleep,args=(self.bgevt,))
        self.bgthread.start()
    def do_activate(self):
        self.win = Gtk.ApplicationWindow(application=self,title="Dance Box Set v0.0.1")
        self.win.present()
def loop_sleep(evt):
    i = 1
    while not evt.is_set():
        print(i)
        i = i+1
        time.sleep(0.5)
def loop_shutdown(app):
    app.bgevt.set()
app = MyApp()
app.connect("shutdown",loop_shutdown)
ex = app.run(sys.argv)
sys.exit(ex)

Author