У меня есть маленькая фигура matplotlib с button_press_event
. Внутри слушателя я использую plt.pause
, чтобы сделать короткую анимацию для каждого клика. Это работает нормально и, как и ожидалось. Однако, если я нажимаю еще раз, прежде чем анимация закончится, я ввожу рекурсию, и остальные анимации воспроизводятся в конце. Если вы нажмете достаточно быстро, вы сможете достичь RecursionError
.
Что мне нужно изменить, поэтому новый щелчок отбрасывает все оставшиеся шаги в методе on_click
?
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.subplots()
ax.set_xlim(0, 10)
ax.set_ylim(0, 10)
xy = np.random.random(2)*10
h1 = ax.plot(xy[0], xy[1], marker='x', color='k')[0]
h2 = ax.plot(xy[0], xy[1], marker='o', color='r')[0]
def on_click(event):
h1.set_xdata(event.xdata)
h1.set_ydata(event.ydata)
for i in range(10):
h2.set_xdata(event.xdata+np.random.random()-0.5)
h2.set_ydata(event.ydata+np.random.random()-0.5)
plt.pause(0.1)
cid_click = fig.canvas.mpl_connect('button_press_event', on_click)