Как продолжить основной код после выполнения start_event_loop в matplotlib
У меня есть код сюжета, который направлен на:
Первый: нарисуйте одно изображение с множеством красных / синих точек внутри.
Второе: с помощью мыши выберите точку, которую нужно удалить, а другую, чтобы изменить цвет.
Третье: обновить мою базу данных точек.
Чтобы достичь своей цели, я намеревался использовать 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")