[OLPC-Games] Minimal GTK graphics activity
Jonathan Blocksom
blocksom at gmail.com
Sun May 13 01:14:04 EDT 2007
Hi, attached is some Python code that demonstrates simple GTK drawing.
I plan to post this to the wiki but I'm not sure where, I thought I'd
at least mail it out to the list first.
Jonathan
---
#
# Minimal GTK Graphics Activity
#
# This demo shows how to set things up to do GTK graphics
# in the Sugar environment.
#
import pygtk
pygtk.require('2.0')
import gtk
import sys
from sugar.activity import activity
class MinimalGtkGraphicsActivity(activity.Activity):
"""Minimal GTK Graphics activity.
Sets up the window for drawing and draws a rectangle inside
another rectangle when the window is shown to the user. Waits
for a key press and then quits.
"""
def __init__(self, handle):
activity.Activity.__init__(self, handle)
# remove any children of the window that Sugar may have added
for widget in self.get_children():
self.remove(widget)
self.set_title("Drawing Area Example")
# Set up event handlers
self.connect("destroy", lambda w: gtk.main_quit())
self.connect("expose-event", self.area_expose_cb)
self.connect("key_press_event", self.keypress_cb)
self.show()
# Set up the drawing area and graphics context
self.area = self.window
self.gc = self.area.new_gc()
# Set up the colors to draw with
self.colormap = self.gc.get_colormap()
self.colors = {}
self.colors['green'] = self.colormap.alloc_color('green')
self.colors['black'] = self.colormap.alloc_color('black')
def keypress_cb(self, widget, event):
"""Handle a key press"""
sys.exit()
def area_expose_cb(self, area, event):
"""Window exposed callback, includes drawing the boxes"""
self.gc.set_foreground(self.colors['black'])
self.area.draw_rectangle(self.gc, True, 100, 100, 300, 300)
self.gc.foreground = self.colors['green']
self.area.draw_rectangle(self.gc, True, 200, 200, 100, 100)
return True
More information about the Games
mailing list