#!/usr/bin/env pythonw import os import sys import gtk import pango import cairo import pangocairo class MyWidget(gtk.DrawingArea): def __init__(self): gtk.DrawingArea.__init__(self) self.set_size_request(300, 250) self.connect('expose-event', self.expose) def expose(self, widget, event): cr = widget.window.cairo_create() layout = cr.create_layout() desc = pango.FontDescription("Mono Bold 27") layout.set_font_description(desc) cr.set_source_rgb(1.0, 0.4, 0.0) cr.move_to(10, 10) layout.set_text("Hello: gjpqy") cr.update_layout(layout) cr.show_layout(layout) cr.set_source_rgb(0.0, 0.0, 0.0) cr.move_to(10, 50) layout.set_text("BLACK: Q") cr.update_layout(layout) cr.show_layout(layout) cr.set_source_rgb(0.0, 0.0, 1.0) cr.move_to(10, 90) layout.set_text("multiline\nlayout") cr.update_layout(layout) cr.show_layout(layout) def destroy(window): gtk.main_quit() def main(): window = gtk.Window() window.set_title("Custom pygtk widget hello world") widget = MyWidget() window.add(widget) window.connect_after('destroy', destroy) window.show_all() gtk.main() return 0 if __name__ == '__main__': sys.exit(main())