Python: информация о возврате координат с помощью мыши

Я хотел бы отобразить изображение на python и позволить пользователю щелкнуть по определенному пикселю. Затем я хочу использовать координаты x и y для выполнения дальнейших вычислений.

До сих пор я использовал сборщик событий:

def onpick1(event): artist = event.artist if isinstance(artist, AxesImage): mouseevent = event.mouseevent x = mouseevent.xdata y = mouseevent.ydata print x,y xaxis = frame.shape[1] yaxis = frame.shape[0] fig = plt.figure(figsize=(6,9)) ax = fig.add_subplot(111) line, = [ax.imshow(frame[::-1,:], cmap='jet', extent=(0,xaxis,0,yaxis), picker=5)] fig.canvas.mpl_connect('pick_event', onpick1) plt.show() 

Теперь мне бы очень хотелось, чтобы function onpick1() return x and y поэтому я могу использовать ее после plt.show() для выполнения дальнейших вычислений.

Какие-либо предложения?

Хороший урок с программированием графического интерфейса – идти объектно-ориентированным. Ваша проблема прямо сейчас заключается в том, что у вас асинхронный обратный вызов, и вы хотите сохранить его значения. Вы должны рассмотреть возможность упаковки всех вместе, например:

 class MyClickableImage(object): def __init__(self,frame): self.x = None self.y = None self.frame = frame self.fig = plt.figure(figsize=(6,9)) self.ax = self.fig.add_subplot(111) xaxis = self.frame.shape[1] yaxis = self.frame.shape[0] self.im = ax.imshow(self.frame[::-1,:], cmap='jet', extent=(0,xaxis,0,yaxis), picker=5) self.fig.canvas.mpl_connect('pick_event', self.onpick1) plt.show() # some other associated methods go here... def onpick1(self,event): artist = event.artist if isinstance(artist, AxesImage): mouseevent = event.mouseevent self.x = mouseevent.xdata self.y = mouseevent.ydata 

Теперь, когда вы нажимаете на точку, она будет устанавливать атрибуты x и y вашего класса. Однако, если вы хотите выполнять вычисления с использованием x и y вы можете просто onpick1 метод onpick1 этих вычислений.