Aspect Frame

#!/usr/bin/env python
#
# [SNIPPET_NAME: Aspect Frame]
# [SNIPPET_CATEGORIES: PyGTK]
# [SNIPPET_DESCRIPTION: Create and use an aspect frame with gtk.AspectFrame]
# [SNIPPET_DOCS: http://www.pygtk.org/pygtk2tutorial/sec-AspectFrames.html, http://www.pygtk.org/docs/pygtk/class-gtkaspectframe.html]

# example aspectframe.py

import pygtk
pygtk.require('2.0')
import gtk

class AspectFrameExample:
    def __init__(self):
        window = gtk.Window(gtk.WINDOW_TOPLEVEL);
        window.set_title("Aspect Frame")
        window.connect("destroy", lambda x: gtk.main_quit())
        window.set_border_width(10)

        # Create an aspect_frame and add it to our toplevel window
        aspect_frame = gtk.AspectFrame("2x1", # label
                                       0.5, # center x
                                       0.5, # center y
                                       2, # xsize/ysize = 2
                                       False) # ignore child's aspect
        window.add(aspect_frame)
        aspect_frame.show()

        # Now add a child widget to the aspect frame
        drawing_area = gtk.DrawingArea()

        # Ask for a 200x200 window, but the AspectFrame will give us a 200x100
        # window since we are forcing a 2x1 aspect ratio
        drawing_area.set_size_request(200, 200)
        aspect_frame.add(drawing_area)
        drawing_area.show()
        window.show()

def main():
    gtk.main()
    return 0

if __name__ == "__main__":
    AspectFrameExample()
    main()