2

我有一个使用 PyQt4 构建的 GUI,我使用 matplotlib (FigureCanvas) 使用多个画布绘制多个图(这是故意的,而不是使用子图)。对于我使用的每个画布方法:

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

其中 xx 表示画布的迭代以获取执行某些操作的信号。我希望能够通过其名称引用画布,而不是使用:

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

我使用更长的方法来引用每个图的 ylabel 名称。

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

有任何想法吗?

4

1 回答 1

2

我不太清楚你的名字是什么意思,但你可以通过以下方式获得对该canvas对象的引用

event_canvas = event.inaxes.axes.figure.canvas

并且画布事件是可散列的,因此您可以将它们用作dict

other_thing = pre_populated_dict[event_canvas]

跟踪代码中给定画布的任何其他数据。

在 python 中,一般来说,获取对象引用的名称不是一种干净的方法(可以这样做,但你不应该这样做)。

于 2013-05-02T15:26:24.410 回答