Почему Python не выполняет заданную мной функцию обработчика событий, если она предоставляется как нестатический метод, Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему Python не выполняет заданную мной функцию обработчика событий, если она предоставляется как нестатический метод,

Сообщение Anonymous »

Кажется, я не понимаю, почему приведенный ниже код не дает мне того поведения, которое мне нужно.
Ожидаемое поведение:

Приведенный ниже код рисует график, и как только я нажму на значок легенды для нарисованного графика, я ожидаю появления двух строк текста: 1) «метод нестатического обработчика событий работает» и 2) «статический обработчик событий» метод работает".

Фактическое поведение:

Как только я нажимаю на значок легенды, это только второй оператор который появляется на терминале. Это указывает на то, что по какой-то причине Python не выполняет функцию обработчика событий «nonstatic_onpick», возможно, потому, что она была предоставлена ​​как нестатический метод. Почему это так? Я где-то допустил синтаксическую ошибку? Есть ли способ предоставить функцию обработчика событий как нестатический метод?

Примечание:

(Я понимаю, что приведенный ниже код может быть не самым элегантным/эффективным/читабельным алгоритмом. но на самом деле я адаптировал это кодирование из другого, более сложного варианта использования, который требует, чтобы алгоритм имел текущую структуру, показанную ниже.)

Кодирование:

Код: Выделить всё

   import matplotlib.pyplot as plt
class Setup_IntrctveLgnd():
def __init__(self,legend,fig):
lgndicons=legend.legend_handles
lgndicons[0].set_picker(20)
fig.canvas.mpl_connect("pick_event", self.nonstatic_onpick)
fig.canvas.mpl_connect("pick_event", Setup_IntrctveLgnd.static_onpick)
def nonstatic_onpick(self,event):
print("non static event handler method working")
def static_onpick(event):
print("static event handler method working")

fig,ax=plt.subplots()
ax.plot([0,1,2,3], label="data")
legend=plt.legend()
Setup_IntrctveLgnd(legend,fig)
plt.show()

Будем очень благодарны за любую помощь.

Подробнее здесь: https://stackoverflow.com/questions/786 ... s-provided
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»