Cairo1GladeApp

This example requires SimpleGladeApp.py, don't forget to download it.

Cairo1GladeApp.png

Cairo1GladeApp.png

cairo1gladeapp.glade

Cairo1GladeApp.py

#!/usr/bin/env python
# -*- coding:UTF-8 -*-

from SimpleGladeApp import SimpleGladeApp
from math import pi
from whrandom import *
import time
import gtk
import cairo
import cairo.gtk

class Cairo1GladeApp(SimpleGladeApp):
        def new(self):
                self.width, self.heigth = self.drawingarea1.window.get_size()
                self.ctx = cairo.Context()
                self.rand = whrandom()
                self.elapsed = 150
                self.on_timeout()

        def on_timeout(self):
                gtk.timeout_add(self.elapsed, self.on_timeout)
                self.drawingarea1.queue_draw()

        def on_expose(self, area, event):
                cairo.gtk.set_target_drawable(self.ctx, self.drawingarea1.window)
                top, left, width, height = event.area
                self.ctx.set_rgb_color(1,1,1)
                self.ctx.rectangle(top, left, width, height)
                self.ctx.fill()
                self.on_object_random()
                self.draw_text()

        def on_object_random(self, *args):
                i = 0
                for i in range (1,101,1):
                        x = self.rand.random()* self.width
                        y = self.rand.random()* self.heigth
                        radio = self.rand.random() * 20

                        red  = self.rand.random()
                        green= self.rand.random()
                        blue = self.rand.random()

                        self.ctx.set_rgb_color(red, green, blue)
                        self.ctx.arc(x ,y, radio, 0, 360 * (pi/180) )

                        self.ctx.save()
                        self.ctx.set_alpha(0.8)
                        self.ctx.set_rgb_color(green, red, blue)
                        self.ctx.fill()
                        self.ctx.restore()
                        self.ctx.stroke()

        def draw_text(self, *args):
                self.ctx.save()
                self.ctx.set_rgb_color(0,0,0)
                self.ctx.move_to(50,130)
                self.ctx.select_font('sant-serif')
                self.ctx.scale_font(20)
                self.ctx.show_text('HOLA MUNDO/GTK+ CAIRO')
                self.ctx.restore()

app = Cairo1GladeApp('cairo1gladeapp.glade')
app.run()