PyGObject (PyGI)

Downloads:

April 5, 2013
pygi-aio-3.4.2rev11.7z (binary only, for python 2.6, 2.7 and 3.3)
pygi-aio-3.4.2rev10_opt.7z (locales, docs, gi, devel files, other data)
Warning: I just realize that python 3.3 is using msvc 2010 (msvcr100.dll), while my build is using msvcr90.dll, A more proper build will need complete recompile. Oops.
Content:
gobject-introspection-1.34.2
*gtk 3.6.4 + adwaita theme [comment out gtk\etc\gtk-3.0\settings.ini to enable]
*glib 2.34.3 + networking (libproxy 0.4.11)
*pango 1.32.6 (harfbuzz 0.9.12, graphite2 1.2.0)
*cairo 1.12.10 (pixman 0.28.2) + GL (glew) + xml
fontconfig 2.10.91
freetype 2.4.10
*gdk-pixbuf 2.26.4 (jasper) + tiff + svg + wmf + psd + webp, alternative version with gdiplus available
*champlain 0.12.3 + *memphis 0.2.3
libxml2 2.9.0
dbus 1.6.8 + dbus-glib 0.100
enchant 1.6.0 + aspell English + hunspell [no dict] + voikko
geoclue 0.12.99
*geocode-glib 0.99.0
*telepathy-glib 0.20.1
*gdl 3.6.2
*clutter/cogl 1.12.2
*clutter-gst 2.0.0
*clutter-gtk 1.4.2
*glade 3.14.2
devhelp 3.6.1
*gtksourceview 3.6.3
*gtkspell3 3.0
*libpeas 1.6.2
*webkitgtk 1.10.2 (libxslt 1.1.28, sqlite 3.7.13)
*librsvg 2.36.4 (libcroco 0.6.8)
*libgda 5.03 (postgres 9 client, mdbtool) + jdbc + sqlite + bdb
*poppler 0.22.1 (openjpeg, lcms2)
*gstreamer 1.0.5 + *base + good + libav + ugly + bad
*gegl 0.2.0 + *babl 0.1.6 + *gegl-gtk3
gnutls 2.12.22 + gcrypt 1.5 + gpgerror
*libsoup-2.40.3, libsoup-gnome
*json-glib 0.14.2
*Gtranslator 2.91.6
*Gedit 3.6.2
*Gucharmap 3.6.1
*GooCanvas 2.0.1
*libGoffice 0.10.0
*libLasem 0.4.1
*osm-gps-map 0.8git
*Vips 7.30
*GVnc 0.5.1, *GtkVnc
* GExiv2

January 27, 2013
pygi-3.4.2_gtk+-3.6.4.7z

September 15, 2012
Experimental builds:
PyGI 3.3.91 for python 2.6, 2.7, 3.3 for Windows 32bit/64bit
GIRepo and typelibs
Runtime win32 Bundle
Runtime win64 bundle (GTK2/3 only)
Gobject Introspection 1.33.10 (static build) for python 2.6/2.7

These are PyGI, do not confused it with PyGTK see http://live.gnome.org/PyGObject/IntrospectionPorting

Example available at http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html

Minimal debug environment available (with mypaint as test-case): http://opensourcepack.blogspot.com/2013/01/mypaint-and-pygi.html

For comments:
Original Post


Still running gtk2? try:
Conservative PyGTK AIO or PyGTK 64bit

cairo-demo.py:

#!/usr/bin/env python
"""
Based on cairo-demo/X11/cairo-demo.c
"""

import cairo
from gi.repository import Gtk

SIZE = 30


def triangle(ctx):
    ctx.move_to(SIZE, 0)
    ctx.rel_line_to(SIZE, 2 * SIZE)
    ctx.rel_line_to(-2 * SIZE, 0)
    ctx.close_path()


def square(ctx):
    ctx.move_to(0, 0)
    ctx.rel_line_to(2 * SIZE, 0)
    ctx.rel_line_to(0, 2 * SIZE)
    ctx.rel_line_to(-2 * SIZE, 0)
    ctx.close_path()


def bowtie(ctx):
    ctx.move_to(0, 0)
    ctx.rel_line_to(2 * SIZE, 2 * SIZE)
    ctx.rel_line_to(-2 * SIZE, 0)
    ctx.rel_line_to(2 * SIZE, -2 * SIZE)
    ctx.close_path()


def inf(ctx):
    ctx.move_to(0, SIZE)
    ctx.rel_curve_to(0, SIZE, SIZE, SIZE, 2 * SIZE, 0)
    ctx.rel_curve_to(SIZE, -SIZE, 2 * SIZE, -SIZE, 2 * SIZE, 0)
    ctx.rel_curve_to(0, SIZE, -SIZE, SIZE, - 2 * SIZE, 0)
    ctx.rel_curve_to(-SIZE, -SIZE, - 2 * SIZE, -SIZE, - 2 * SIZE, 0)
    ctx.close_path()


def draw_shapes(ctx, x, y, fill):
    ctx.save()

    ctx.new_path()
    ctx.translate(x + SIZE, y + SIZE)
    bowtie(ctx)
    if fill:
        ctx.fill()
    else:
        ctx.stroke()

    ctx.new_path()
    ctx.translate(3 * SIZE, 0)
    square(ctx)
    if fill:
        ctx.fill()
    else:
        ctx.stroke()

    ctx.new_path()
    ctx.translate(3 * SIZE, 0)
    triangle(ctx)
    if fill:
        ctx.fill()
    else:
        ctx.stroke()

    ctx.new_path()
    ctx.translate(3 * SIZE, 0)
    inf(ctx)
    if fill:
        ctx.fill()
    else:
        ctx.stroke()

    ctx.restore()


def fill_shapes(ctx, x, y):
    draw_shapes(ctx, x, y, True)


def stroke_shapes(ctx, x, y):
    draw_shapes(ctx, x, y, False)


def draw(da, ctx):
    ctx.set_source_rgb(0, 0, 0)

    ctx.set_line_width(SIZE / 4)
    ctx.set_tolerance(0.1)

    ctx.set_line_join(cairo.LINE_JOIN_ROUND)
    ctx.set_dash([SIZE / 4.0, SIZE / 4.0], 0)
    stroke_shapes(ctx, 0, 0)

    ctx.set_dash([], 0)
    stroke_shapes(ctx, 0, 3 * SIZE)

    ctx.set_line_join(cairo.LINE_JOIN_BEVEL)
    stroke_shapes(ctx, 0, 6 * SIZE)

    ctx.set_line_join(cairo.LINE_JOIN_MITER)
    stroke_shapes(ctx, 0, 9 * SIZE)

    fill_shapes(ctx, 0, 12 * SIZE)

    ctx.set_line_join(cairo.LINE_JOIN_BEVEL)
    fill_shapes(ctx, 0, 15 * SIZE)
    ctx.set_source_rgb(1, 0, 0)
    stroke_shapes(ctx, 0, 15 * SIZE)


def main():
    win = Gtk.Window()
    win.connect('destroy', lambda w: Gtk.main_quit())
    win.set_default_size(450, 550)

    drawingarea = Gtk.DrawingArea()
    win.add(drawingarea)
    drawingarea.connect('draw', draw)

    win.show_all()
    Gtk.main()

if __name__ == '__main__':
    main()