2013-05-02 69 views
2

我有一个使用PyQt4构建的GUI,我使用matplotlib(图形漫画)来绘制使用多个画布(这是故意的而不是使用子图)的几个地块。每个画布我使用方法:matplotlib图形画布名称

self.canvas_xx.mpl_connect('scroll_event', self.on_mouse_scroll) 

其中xx代表画布的重复,得到的信号执行一些动作。我希望能够引用它的名字在画布上,而不是使用:

ylabel = event.inaxes.axes.get_ylabel().split(' ')[0] 

,我使用referncing每个图形的ylabel名的长方法。

我使用dir(event)查看事件方法,并且有一个名为“canvas”的方法,但没有明显的方法来获取画布的名称。

任何想法?

+1

你是什么意思的名字?你可以通过'event.inaxes.axes.figure.canvas'获得对画布对象的引用。 – tacaswell 2013-05-02 15:04:58

回答

2

我不太清楚你的名字的意思,但你可以通过

event_canvas = event.inaxes.axes.figure.canvas 

和帆布事件哈希的,所以你可以在dict

使用它们作为键获得AA参考 canvas对象
other_thing = pre_populated_dict[event_canvas] 

跟踪您想要的代码中给定画布的其他数据。

在python中,通常不是一种干净的方式来获取对象的引用的名称(它可以完成,但你不应该)。

+0

谢谢!我的意思是“名称”是我想获得发送事件的画布的引用(鼠标当前的位置)。换句话说,我想知道哪个self.canavsxx发送了事件,如:“self.canvas01”发送了事件。但它似乎不是一种干净的方式,我将使用每个画布的“ylabel”,因为它们是不同的。 – Nader 2013-05-02 22:03:43

+1

但为了什么目的?你已经有了相关的对象。 – tacaswell 2013-05-02 22:49:54