.. _user_interfaces-embedding_in_gtk2:

user_interfaces example code: embedding_in_gtk2.py
==================================================

[`source code <embedding_in_gtk2.py>`_]

::

    """
    show how to add a matplotlib FigureCanvasGTK or FigureCanvasGTKAgg widget and
    a toolbar to a gtk.Window
    """
    import gtk
    
    from matplotlib.figure import Figure
    from numpy import arange, sin, pi
    
    # uncomment to select /GTK/GTKAgg/GTKCairo
    #from matplotlib.backends.backend_gtk import FigureCanvasGTK as FigureCanvas
    from matplotlib.backends.backend_gtkagg import FigureCanvasGTKAgg as FigureCanvas
    #from matplotlib.backends.backend_gtkcairo import FigureCanvasGTKCairo as FigureCanvas
    
    # or NavigationToolbar for classic
    #from matplotlib.backends.backend_gtk import NavigationToolbar2GTK as NavigationToolbar
    from matplotlib.backends.backend_gtkagg import NavigationToolbar2GTKAgg as NavigationToolbar
    
    # implement the default mpl key bindings
    from matplotlib.backend_bases import key_press_handler
    
    win = gtk.Window()
    win.connect("destroy", lambda x: gtk.main_quit())
    win.set_default_size(400, 300)
    win.set_title("Embedding in GTK")
    
    vbox = gtk.VBox()
    win.add(vbox)
    
    fig = Figure(figsize=(5, 4), dpi=100)
    ax = fig.add_subplot(111)
    t = arange(0.0, 3.0, 0.01)
    s = sin(2*pi*t)
    
    ax.plot(t, s)
    
    
    canvas = FigureCanvas(fig)  # a gtk.DrawingArea
    vbox.pack_start(canvas)
    toolbar = NavigationToolbar(canvas, win)
    vbox.pack_start(toolbar, False, False)
    
    
    def on_key_event(event):
        print('you pressed %s' % event.key)
        key_press_handler(event, canvas, toolbar)
    
    canvas.mpl_connect('key_press_event', on_key_event)
    
    win.show_all()
    gtk.main()
    

Keywords: python, matplotlib, pylab, example, codex (see :ref:`how-to-search-examples`)