GTK Graphics Sample Activity: Difference between revisions
Jump to navigation
Jump to search
(Initial revision) |
(Fix line breaks in code sample) |
||
Line 7: | Line 7: | ||
# in the Sugar environment. |
# in the Sugar environment. |
||
# |
# |
||
⚫ | |||
import pygtk |
import pygtk |
||
pygtk.require('2.0') |
pygtk.require('2.0') |
||
⚫ | |||
import gtk |
import gtk |
||
import sys |
import sys |
||
Line 24: | Line 24: | ||
""" |
""" |
||
def __init__(self, handle): |
def __init__(self, handle): |
||
activity.Activity.__init__(self, handle) |
activity.Activity.__init__(self, handle) |
||
# remove any children of the window that Sugar may have added |
# remove any children of the window that Sugar may have added |
||
for widget in self.get_children(): |
for widget in self.get_children(): |
||
self.remove(widget) |
self.remove(widget) |
||
self.set_title("Drawing Area Example") |
self.set_title("Drawing Area Example") |
||
Line 43: | Line 43: | ||
self.area = self.window |
self.area = self.window |
||
self.gc = self.area.new_gc() |
self.gc = self.area.new_gc() |
||
# Set up the colors to draw with |
# Set up the colors to draw with |
||
self.colormap = self.gc.get_colormap() |
self.colormap = self.gc.get_colormap() |
||
Line 49: | Line 49: | ||
self.colors['green'] = self.colormap.alloc_color('green') |
self.colors['green'] = self.colormap.alloc_color('green') |
||
self.colors['black'] = self.colormap.alloc_color('black') |
self.colors['black'] = self.colormap.alloc_color('black') |
||
def keypress_cb(self, widget, event): |
def keypress_cb(self, widget, event): |
||
"""Handle a key press""" |
"""Handle a key press""" |
Revision as of 18:46, 13 May 2007
Here is an activity which demonstrates using GTK (specifically PyGTK) to do graphics in a Sugar Activity. The activity draws a green square inside of a black square using GTK drawing commands. When you press a key it quits.
# # 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