Events matplotlib和x2B中的连接信号;gtk

Events matplotlib和x2B中的连接信号;gtk,events,gtk,matplotlib,Events,Gtk,Matplotlib,我正在gtk中开发matplotlib应用程序,我想在python类中抽象绘图相关的内容,但同时,我也希望能够通过按键与图形交互。我的类定义如下所示: class Plot: def __init__(self, data, datatype, xlabel=None, ylabel=None, xtics=None, ytics=None): self.figure = Figure(figsize=(8,6), dpi=72) self.axis =

我正在gtk中开发matplotlib应用程序,我想在python类中抽象绘图相关的内容,但同时,我也希望能够通过按键与图形交互。我的类定义如下所示:

class Plot:
    def __init__(self, data, datatype, xlabel=None, ylabel=None, xtics=None, ytics=None):
        self.figure = Figure(figsize=(8,6), dpi=72)
        self.axis = self.figure.add_subplot(111)
        self.canvas = FigureCanvas(self.figure)
        self.figure.canvas.mpl_connect('key_press_event', self.on_key)

    def on_key(self, event):
        print 'pressed'
我把绘图放在主窗口中:

x = numpy.linspace(0, 10, 100)
y = numpy.sin(x)
plot = Plot([x,y], 'line', 'xlabel', 'ylabel')
vbox.pack_start(plot.plotbox)
其中vbox只是一个gtkbox。现在,绘图已正确显示,但我无法与之交互,即,当我按下某个键时,我无法在_键上输入功能。 有人能指出遗漏了什么吗

非常感谢,


v923z

我发现了问题所在:plot的作用域是init函数,因此一旦init函数返回,它就会变为非活动状态。我们必须将绘图定义为

self.plot = Plot([x,y], 'line', 'xlabel', 'ylabel')
vbox.pack_start(self.plot.plotbox)
这样,绘图会对按键做出反应

v923z