我有一个绘图代码,旨在:
首先:绘制一张内部有许多红/蓝点的图像。
第二个:使用鼠标选择要删除的点和要更改颜色的点
第三:更新我的点数据库。
为了实现我的目标,我打算使用mpl_connect
和start_event_loop
:
cid1=fig.canvas.mpl_connect('button_press_event',onclick)
fig.canvas.start_event_loop(timeout = -1)
在我的onclick
事件中,我有if / else句子:
如果单击鼠标左键,将删除选定的点,
如果右键单击:要更改所选点的颜色,
如果点击中点:退出活动代码,然后继续执行我的代码。
elif event.button == 2:
print("exit and continue")
fig.canvas.stop_event_loop
fig.canvas.mpl_disconnect(cid1)
但是,当我运行此代码并按图中的中键时,该代码将无法继续执行。
有没有可以使流程回到主代码的功能?
代码如下:
import ...
def onclick(event):
if event.button == 1:
get click axis and delete the points in list
elif event.button == 3:
get click axis and change the points attribute in list
elif event.button == 3:
print("exit and continue")
fig.canvas.stop_event_loop
fig.canvas.mpl_disconnect(cid1)
if __name__== "__main__":
plt.ion()
//my data reading code
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
ax1.imshow(data,origin="lower")
dot.append(ax1.plot(peak[i]["coord"][0],peak[i]["coord"][1],color(peak[i]["atom"])+"o",markersize=1)) //plot dots
cid1=fig.canvas.mpl_connect('button_press_event',onclick)
fig.canvas.start_event_loop(timeout = -1)
// I want to first do the clicking, and continue my remaining codes here after.
print("continue")