Problema de incorporação de um pilar Figura em um aplicativo Gtk usando rapidamente

2

Atualmente, estou tentando criar um aplicativo simples que inclua alguns valores de pylab . Eu comecei a usar quickly e estou preocupado com alguns problemas de importação. Ou seja, nenhum dos backends matplotlib poderá funcionar.

Mais especificamente, se alguma das seguintes declarações import não estiver comentada no meu arquivo principal, então quickly falhará ao executar o aplicativo

#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

Portanto, não há como incorporar um gráfico.

Aqui está a saída de quickly run se o backend_gtk não tiver comentário

/usr/lib/python2.7/dist-packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion 'g_type_from_name (name) == 0' failed   import gobject._gobject 
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:40: Warning: specified class size for type 'PyGtkGenericCellRenderer' is smaller than the parent type's 'GtkCellRenderer' class size   from gtk import
_gtk 
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:40: Warning: g_type_get_qdata: assertion 'node != NULL' failed   from gtk import _gtk

Alguma ideia do que poderia resolver o problema? Você precisa de mais informações?

    
por Buddyshot 01.03.2014 / 00:37

1 resposta

1

Você precisará do atleast versão 1.2.0 do matplotlib e, em seguida, usar os backends do GTK3.

Exemplo retirado do link

#!/usr/bin/env python
"""
demonstrate adding a FigureCanvasGTK3Agg widget to a Gtk.ScrolledWindow
using GTK3 accessed via pygobject
"""

from gi.repository import Gtk

from matplotlib.figure import Figure
from numpy import arange, sin, pi
from matplotlib.backends.backend_gtk3agg import FigureCanvasGTK3Agg as FigureCanvas

win = Gtk.Window()
win.connect("delete-event", Gtk.main_quit )
win.set_default_size(400,300)
win.set_title("Embedding in GTK")

f = Figure(figsize=(5,4), dpi=100)
a = f.add_subplot(111)
t = arange(0.0,3.0,0.01)
s = sin(2*pi*t)
a.plot(t,s)

sw = Gtk.ScrolledWindow()
win.add (sw)
# A scrolled window border goes outside the scrollbars and viewport
sw.set_border_width (10)

canvas = FigureCanvas(f)  # a Gtk.DrawingArea
canvas.set_size_request(800,600)
sw.add_with_viewport (canvas)

win.show_all()
Gtk.main()

Nota: O Ubuntu 12.04 não possui o Matplotlib 1.2.0 no repositório, mas é instalável através de pip :

sudo pip install matplotlib
    
por Timo 03.03.2014 / 13:30