直接上代码:
import matplotlib. pyplot as plt
fig, ax = plt. subplots( )
line, = ax. plot( [ 1 , 2 , 3 ] , label= 'Line 1' )
ax. legend( draggable= True )
legend = ax. get_legend( )
legend_bbox = legend. get_window_extent( ) def call_move ( event) : axtemp = event. inaxesmouse_x = event. xmouse_y = event. yprint ( f"鼠标_x= { mouse_x} " ) print ( f"鼠标_y= { mouse_y} " ) if axtemp and axtemp. get_legend( ) : legend_bbox = axtemp. get_legend( ) . get_window_extent( ) left_bottom = legend_bbox. get_points( ) [ 0 ] right_top = legend_bbox. get_points( ) [ 1 ] if left_bottom[ 0 ] <= mouse_x <= right_top[ 0 ] and left_bottom[ 1 ] <= mouse_y <= right_top[ 1 ] : print ( "鼠标点击在图例矩形区域内。" ) else : print ( "鼠标点击在图例矩形区域外。" ) fig. canvas. mpl_connect( 'button_press_event' , call_move) plt. show( )