[gtk/python-example] Add a simple python example
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/python-example] Add a simple python example
- Date: Sat, 3 Jul 2021 01:44:05 +0000 (UTC)
commit ed5b42071c26829024c0c4d4459e34548fb68957
Author: Matthias Clasen <mclasen redhat com>
Date: Fri Jul 2 21:20:39 2021 -0400
Add a simple python example
This shows how to do custom drawing in a widget,
implemented in python. The example sets up the
environment for running from the toplevel dir,
assuming that the build dir is called 'build'.
examples/squares.py | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 61 insertions(+)
---
diff --git a/examples/squares.py b/examples/squares.py
new file mode 100755
index 0000000000..5aea3d32cd
--- /dev/null
+++ b/examples/squares.py
@@ -0,0 +1,61 @@
+#!/usr/bin/env -S GI_TYPELIB_PATH=${PWD}/build/gtk:${GI_TYPELIB_PATH}
LD_PRELOAD=${PWD}/build/gtk/libgtk-4.so python3
+
+import gi
+
+gi.require_version('Gdk', '4.0')
+gi.require_version('Gtk', '4.0')
+
+from gi.repository import Gdk
+from gi.repository import Gtk
+from gi.repository import Graphene
+
+
+class DemoWidget(Gtk.Widget):
+
+ __gtype_name__ = "DemoWidget"
+
+ def __init__(self):
+ super().__init__()
+
+ def do_measure(self, orientation, for_size: int):
+ # We need some space to draw
+ return 100, 200, -1, -1
+
+ def do_snapshot(self, snapshot):
+ # Draw four color squares
+ color = Gdk.RGBA()
+ rect = Graphene.Rect.alloc()
+
+ width = self.get_width() / 2
+ height = self.get_height() / 2
+
+ Gdk.RGBA.parse(color, "red")
+ rect.init(0, 0, width, height)
+ snapshot.append_color(color, rect)
+
+ Gdk.RGBA.parse(color, "green")
+ rect.init(width, 0, width, height)
+ snapshot.append_color(color, rect)
+
+ Gdk.RGBA.parse(color, "yellow")
+ rect.init(0, height, width, height)
+ snapshot.append_color(color, rect)
+
+ Gdk.RGBA.parse(color, "blue")
+ rect.init(width, height, width, height)
+ snapshot.append_color(color, rect)
+
+def on_activate(app):
+ # Create a new window
+ win = Gtk.ApplicationWindow(application=app)
+ win.set_title("Squares")
+ icon = DemoWidget()
+ win.set_child(icon)
+ win.present()
+
+# Create a new application
+app = Gtk.Application(application_id='org.gtk.exampleapp')
+app.connect('activate', on_activate)
+
+# Run the application
+app.run(None)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]