首页 > 解决方案 > Matplotlib key_press_event 永远不会在 macOS 后端触发

问题描述

我在后端使用 Matplotlib macosx。我正在按照此处的示例连接一个简单的事件处理程序:

import matplotlib.pyplot as plt

def _on_keypress(event):
    print('Hit on_keypress()')

plt.connect('key_press_event', _on_keypress)
# Call plt.plot() a few times ... 
plt.show()

当我从终端运行此脚本时,会显示一个图形,但按下键会在终端中显示按下的键,并且_on_keypress永远不会被调用。

似乎情节窗口不知何故不在焦点上?然而,无论我点击图形还是终端,我都会得到相同的行为(字符进入终端)。

如果我打开调试器,我可以验证处理程序是否已附加到画布:

(Pdb) fig = plt.gcf()
(Pdb) fig.canvas.key_press_event('a')
Hit on_keypress()

到底是怎么回事?

标签: matplotlib

解决方案


推荐阅读