Matplotlib «pick_event» не работает во встроенном графе с FigureCanvasTkAgg

#python #events #matplotlib #tkinter

#python #Мероприятия #matplotlib #tkinter

Вопрос:

Я пытаюсь обработать некоторые события для выполнения взаимодействия пользователя со встроенными подзаголовками во фрейме Tkinter. Как в этом примере

Отлично работает с «key_press_event» и «button_press_event», но не работает с «pick_event».

Я изменил этот пример по ссылке, просто добавив следующий фрагмент кода после mpl_connect вызова:

 def on_button_press(event):
    print('you pressed mouse button')

canvas.mpl_connect('button_press_event', on_button_press)

def on_pick(event):
    print('you picked:',event.artist)

canvas.mpl_connect('pick_event', on_pick)
  

Почему «pick_event» не работает во встроенных графах? И как заставить его работать?

Мои подробные конфигурации:

  • Windows 10
  • Python 3.5 (версия conda)
  • Matplotlib 1.5.3 установлен через pip

Заранее спасибо!

Ответ №1:

Ну, я решил это…

Для большинства событий нам просто нужно использовать mpl_connect метод, чтобы волшебство произошло. Моя ошибка в том, что я не заметил, что нам нужно четко указать, что наш график «выбирается», вводя аргумент picker=True , который запускает событие только при точном нажатии на исполнителя, и picker=x где x — целое число, которое является допуском пикселей для триггера. Итак, помимо изменений, которые я вставил для выбора в вопросе, мы должны заменить

a.plot(t, s) для a.plot(t, s,picker=True) или a.plot(t, s,picker=10) , например

Комментарии:

1. Я заставил его работать с axis = figure.add_subplot(1,1,1,picker=True)