Я использую объекты таймера matplotlib для регистрации моей собственной функции обновления для анимации. Кажется, я не могу остановить обратные вызовы после их запуска, не сохраняя ссылки на объект таймера.Где таймеры живут в matplotlib
Это был мой опыт до сих пор, когда я создаю объект в matplotlib. Мне дается ссылка на него, но он также добавляется в список внутри какого-либо другого объекта (ось в фигурах, линии по оси и т. Д.), Которые затем может быть запрошена позже. Однако я не могу найти, где живут объекты таймера. Моя проблема может быть суммированы этот фрагмент кода
import matplotlib.pyplot as plt
import numpy as np
def update():
plt.get_current_fig_manager().canvas.figure.patch.set_facecolor(str(np.random.random()))
plt.draw()
def start_animation():
timer = fig.canvas.new_timer(interval = 50)
timer.add_callback(update)
timer.start()
fig = plt.figure()
start_animation()
Запуск выше фрагмента кода, затем попытайтесь программно остановить мигание. Функция, которую необходимо вызвать, -
timer.remove_callback(update).
Должно быть ясным. Я знаю, что могу просто сохранить ссылку на объект таймера, и эта проблема исчезнет. Я ищу объяснение того, где этот объект должен жить в matplotlib.
Я понимаю что нетрудно сохранить ссылку на объект сам. Я ищу лучшего понимания matplotlib больше, чем быстрое решение. Я знаю, что ссылка скрыта где-то, потому что она продолжает называться, но я не мог найти ее в любом месте, я смотрел – Hammer
там, я немного разработал –
спасибо, это было очень полезно – Hammer