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:
- https://www.gtk.org/docs/language-bindings/python/
- https://pygobject.gnome.org/getting_started.html#ubuntu-getting-started
- 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)