Matplotlib新版本中如何临时可逆禁用自带按键事件处理?
临时可逆禁用Matplotlib自带按键事件的新方案
在Matplotlib新版本中,fig.canvas.manager.key_press方法已被移除,你可以通过以下方式实现临时禁用并恢复默认快捷键(如s保存、q退出等):
核心思路
- 先保存默认按键事件的绑定ID
- 断开该绑定以临时禁用默认快捷键
- 完成操作后重新连接默认的按键处理函数
代码实现
import matplotlib import matplotlib.pyplot as plt # 创建绘图实例 fig, ax = plt.subplots() # 保存默认按键事件的处理ID default_key_handler_id = fig.canvas.manager.key_press_handler_id # 临时断开自带的按键事件绑定 fig.canvas.mpl_disconnect(default_key_handler_id) # ---------------------- # 此处执行你的自定义操作 # 此时按"s""q"等快捷键不会触发Matplotlib的默认行为 ax.plot([1, 3, 2]) plt.show(block=False) # ---------------------- # 恢复默认的按键事件绑定 fig.canvas.manager.key_press_handler_id = fig.canvas.mpl_connect( 'key_press_event', matplotlib.backend_bases.key_press_handler )
额外说明
- 若需要临时替换为自定义按键逻辑,可在断开默认绑定后,用
mpl_connect绑定你自己的key_press_event处理函数,恢复时切回matplotlib.backend_bases.key_press_handler即可 - 该方法适配Matplotlib 3.5+版本,主流后端(TkAgg、QtAgg、Agg等)均适用
内容的提问来源于stack exchange,提问作者Paul Brodersen
相关产品推荐
相关产品推荐

