2012-04-06 47 views
0

我正在gtk中开发一个matplotlib应用程序,我想在python类中抽象绘图相关的东西,但同时我也想有能力与之交互通过击键的图形。我的类定义是这样的:在matplotlib中连接信号+ gtk

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。现在,情节显示正常,但我无法与其交互,即当我按下某个键时,我无法输入函数on_key。 有人可能指出缺少什么?

非常感谢,

v923z

回答

0

我想通了什么问题了:情节的范围是初始化功能,所以它变为无效,一旦初始化函数返回。人们必须将绘图定义为

self.plot = Plot([x,y], 'line', 'xlabel', 'ylabel') 
vbox.pack_start(self.plot.plotbox) 

由此,该图反应到按键。

v923z