Matplotlib FuncAnimation与事件处理程序结合使用会忽略一些鼠标点击

时间:2018-03-23 17:57:37

标签: python matplotlib

我正在编写一个小的matplotlib工具,它循环遍历一组帧,并且应该响应一些键盘和鼠标事件。但是,我的一些button_press_events被忽略了,我不明白为什么。这是一个MWE:

import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

fig, ax = plt.subplots()
framecounter = ax.text(0.5, 0.5, '')

def on_click(event):
    print event.xdata

def func(i):
    framecounter.set_text(str(i))
    return framecounter,

def toggle_pause(event):
    if event.key.isspace():
        if anim.running:
            anim.event_source.stop()
        else:
            anim.event_source.start()
        anim.running ^= True

anim = FuncAnimation(fig, func, 100)
anim.running = True
fig.canvas.mpl_connect('button_press_event', on_click)
fig.canvas.mpl_connect('key_press_event', toggle_pause)

plt.show()

我不确定播放/暂停功能是否与问题有关,但它有助于重现问题。

如果我的button_press_events在暂停动画后立即发生,则会被忽略。第二次按下始终打印输出,如果我先移动鼠标或在点击前等待几秒钟,它也会打印输出。

这里发生了什么?

我在不同系统上尝试使用mpl2.1.1和mpl2.2.2使用TKAgg和QT4Agg。

0 个答案:

没有答案