mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-24 20:51:10 +00:00
Merge branch 'python-example' into 'master'
Add a simple python example See merge request GNOME/gtk!3719
This commit is contained in:
commit
c88dc98b7c
61
examples/squares.py
Executable file
61
examples/squares.py
Executable file
@ -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)
|
Loading…
Reference in New Issue
Block a user