我正在尝试将button_press_event
注册到on_click
函数中,该函数用于使animate
使用的matplotlib.animation.FuncAnimation
函数的帧前进。
问题是print
中的on_click
永远不会发生。我想问题是,用于暂停动画直到检测到button_press_event
的循环正在锁定解释器。
data = [
{'1': [(2000, 2000), (2050, 2000), (2050, 2100)],
'2': [(1500, 1500), (1550, 1500), (1550, 1600)],
'3': [(1700, 1700), (1750, 1700), (1750, 1850)],
},
{'1': [(4000, 2000), (5000, 2000), (6000, 2010)],
'2': [(4500, 1500), (4505, 1500), (3505, 1510)],
'3': [(4700, 1700), (6705, 1700), (5705, 1710)],
},
{'1': [(3300, 1000), (4080, 4000), (4000, 5010)],
'2': [(3500, 3200), (3505, 2750), (2505, 1910)],
'3': [(3700, 2600), (4705, 4100), (3705, 1310)],
}
]
plots = {k: ax.plot([],[])[0] for d in data for k in d.keys()}
progress = False
def on_click(event):
print('Event')
global progress
progress ^= True
def animate(i):
d = data[i]
while not progress:
pass
plots[k].set_data(list(zip(*v))) for k,v in d.items()]
fig.canvas.mpl_connect('button_press_event', on_click)
ani = animation.FuncAnimation(fig, animate, frames=len(data), interval=1000, repeat=False)
plt.show()
答案 0 :(得分:1)
我不确定我是否理解您为什么要使用动画。 这是您要达到的目标吗?
Number1 | Qty1 | Number2 | Qty2 | Number3 | Qty3
--------+-------|---------|-------|---------|------
100001 | 100 | 100002 | 110 | 100003 | 120
100004 | 130 | 100005 | 200 | 100006 | 300
100007 | 400 | null | null | null | null