58 lines
1.5 KiB
Python
Executable File

#!/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 20")
layout.set_font_description(desc)
layout.set_text("M")
extents = layout.get_pixel_extents()
line_height = extents[1][3] - extents[1][1]
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, 10 + line_height)
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, 10 + line_height * 2)
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())