【Python】【matplotlib】键鼠响应事件

来源:互联网 发布:阿迪达斯淘宝旗舰店 编辑:程序博客网 时间:2024/06/05 02:45

事件绑定fig.canvas.mpl_connect()

import matplotlib.pyplot as pltdef on_key_press(event):    print(event.key)fig, ax = plt.subplots()fig.canvas.mpl_connect('key_press_event', on_key_press)plt.show()

这段程序的功能是响应键盘按键,print按键的值

mpl_connect的参数:

参数 意义 ‘button_press_event’ 按下鼠标 ‘button_release_event’ 释放鼠标 ‘draw_event’ 界面重新绘制 ‘key_press_event’ 按下键盘 ‘key_release_event’ 释放键盘 ‘motion_notify_event’ 鼠标移动 ‘pick_event’ 鼠标点选绘图对象 ‘resize_event’ ‘scroll_event’ 鼠标滚轴事件 ‘figure_enter_event’ 鼠标进入figure ‘figure_leave_event’ 鼠标离开figure ‘axes_enter_event’ 鼠标进入Axes ‘axes_leave_event’ 鼠标离开Axes ‘close_event’ 关闭图表

查询已经注册的响应函数

fig.canvas.callbacks.callbacks

程序示例:键盘控制颜色

import matplotlib.pyplot as pltimport numpy as npdef on_key_press(event):    if event.key in 'rgbcmyk':        line.set_color(event.key)    fig.canvas.draw_idle()#重新绘制整个图表,fig, ax = plt.subplots()x = np.linspace(0, 10, 1000)y = np.sin(x)line = ax.plot(x, y)[0]fig.canvas.mpl_disconnect(fig.canvas.manager.key_press_handler_id)#取消默认快捷键的注册fig.canvas.mpl_connect('key_press_event', on_key_press)plt.show()

这里有两个点:
1. fig.canvas.draw_idle()重新绘制整个图表
2. fig.canvas.mpl_disconnect()取消已经注册的响应函数。这里是为了取消默认快捷键

程序示例

import matplotlib.pyplot as pltfig, ax = plt.subplots()text = ax.text(0.5, 0.5, 'event', ha='center', va='center', fontdict={'size': 20})def call_back(event):    info = 'name:{}\n button:{}\n x,y:{},{}\n xdata,ydata:{}{}'.format(event.name, event.button,event.x, event.y,event.xdata, event.ydata)    text.set_text(info)    fig.canvas.draw_idle()fig.canvas.mpl_connect('button_press_event', call_back)fig.canvas.mpl_connect('button_release_event', call_back)fig.canvas.mpl_connect('motion_notify_event', call_back)plt.show()

功能不多解释,仔细读读代码

原创粉丝点击