我在交互式Matplotlib图中使用一个游标小部件,如下所示:
cursor = Cursor(ax1, useblit=True, color='red', linewidth=1)
cid = fig.canvas.mpl_connect('button_press_event', on_click)效果很好。on_click函数采用x,y单击位置,并进行一些补充绘图。基本的东西。
当我激活缩放工具时,我也在捕捉点击。是否有必要将激活和停用键笔画绑定到小部件( RectangleSelector示例)小部件上,还是存在一个知道工具栏项状态的方法?
从RectangleSelector示例中打开/关闭选择器的示例:
def toggle_selector(event):
if event.key in ['Q','q'] and toggle_selector.RS.active:
toggle_selector.RS.set_active(False)
if event.key in ['A', 'a'] and not toggle_selector.RS.active:
toggle_selector.RS.set_active(True)发布于 2013-12-20 22:18:51
那不是公共状态,但你可以检查
fig.canvas.manager.toolbar._active is None如果工具栏不试图抓取单击(通过平移或缩放),则为True。
你正在接触和接触可能随时改变的内部状态,所以你要冒着自己的风险使用它。开发人员对更改任何以_*开头的不带推荐期的内容都没有任何遗憾。
发布于 2020-08-17 08:36:19
由于使用了接受答案,matplotlib版本3.3不再适用于此承诺。当使用标准NavigationToolbar2时,您可以使用它的mode属性。
类似于重要性--的回答的示例
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
def on_click(evt):
state = fig.canvas.manager.toolbar.mode
if state == '':
print("no tool selected")
else:
print(f"{state} selected")
cid = fig.canvas.mpl_connect('button_press_event', on_click)
plt.show()发布于 2019-08-30 10:31:14
由于toolmanager工具栏现在可以用于更多后端,因此在这里可能会很有用。
import matplotlib.pyplot as plt
plt.rcParams['toolbar'] = 'toolmanager'
fig, ax = plt.subplots()
def on_click(evt):
state = fig.canvas.manager.toolbar.toolmanager.active_toggle["default"]
if state is None:
print("no tool selected")
else:
print(f"{state} selected")
cid = fig.canvas.mpl_connect('button_press_event', on_click)
plt.show()https://stackoverflow.com/questions/20711148
复制相似问题