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()
для выполнения дальнейших вычислений.
Какие-либо предложения?
- Как редактировать данные с помощью django-tables2 во внешнем интерфейсе?
- Простой сетевой обмен сообщениями python
- Свойства интерфейса DBus
- Как документировать и тестировать интерфейсы, необходимые для формальных параметров в Python 2?
- есть ли инструмент для автоматического создания интерфейса с помощью swig?
Хороший урок с программированием графического интерфейса – идти объектно-ориентированным. Ваша проблема прямо сейчас заключается в том, что у вас асинхронный обратный вызов, и вы хотите сохранить его значения. Вы должны рассмотреть возможность упаковки всех вместе, например:
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
этих вычислений.
- «Queue_declare» из pika возвращает «None» при запросе путем установки passive = «True», даже если существует очередь
- Как получить параметры из пути в Bottle?
- Как избежать замораживания GUI при связывании скрипта muliprocessing python, связанного с gui (скрипт python должен работать в фоновом режиме)
- Отзывчивая запись PyAudio
- Чтение и обработка пакетов из сетевого интерфейса с помощью python
- Поиск приложения GUI для ввода команд Linux
- Как проверить статус или убить внешний процесс с помощью python
- Как подклассы str в Python
- Как использовать multiprocessing.Pool правильно с PySide для создания неблокирующего графического интерфейса
- Как закончить вход sys.stdin.readlines ()?
- «Иногда», получая InterfaceError на PostgreSQL с Peewee ORM