55 lines
1.3 KiB
Python
Executable File
55 lines
1.3 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 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())
|