2013-05-02 106 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