#!/usr/bin/python import gtk import gobject class MyApp(): def __init__(self): window = gtk.Window() hbox = gtk.HBox() vbox = gtk.HBox() hslide = gtk.HScale() vslide = gtk.VScale() drawing_area = gtk.DrawingArea() drawing_area.set_size_request(600, 600) self.pixbuf = gtk.gdk.pixbuf_new_from_file('images/arco.jpg') window.connect('destroy', self.destroy) drawing_area.connect('configure_event', self.__configure_cb) drawing_area.connect('expose-event', self.__expose_cb) #window.add(drawing_area) window.add(hbox) hbox.add(vbox) vbox.add(drawing_area) hbox.add(vslide) vbox.add(hslide) window.show() vbox.show() hbox.show() drawing_area.show() def destroy(self, window, data=None): gtk.main_quit() def __configure_cb(self, drawing_area, data=None): x, y, width, height = drawing_area.get_allocation() canvas = drawing_area.window self.pixmap = gtk.gdk.Pixmap(canvas, width, height) self.pixmap.draw_pixbuf(None, self.pixbuf, 0, 0, 0, 0, -1, -1, gtk.gdk.RGB_DITHER_NONE, 0, 0) return True def __expose_cb(self, drawing_area, data=None): x, y, width, height = data.area context = drawing_area.get_style().fg_gc[gtk.STATE_NORMAL] canvas = drawing_area.window canvas.draw_drawable(context, self.pixmap, x, y, x, y, width, height) return False if __name__ == "__main__": my_app = MyApp() gtk.main()