Как продолжить основной код после выполнения 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") 

0 ответов

Другие вопросы по тегам