пока функция не работает во время интерактивного цикла в python

Во-первых, посмотрите мой код.

    coordinates_length = 0
    while coordinates_length != 2:
        cor_list = []
        DataCursor(scat, index, depth)
        plt.show()
        coordinates_length = len(cor_list)

То, что я сделал, было «интерактивным» циклом. На графике я выбираю две координаты, и в зависимости от количества выбранных вариантов график снова отображается или переходит к следующему шагу.

Это работает, когда я выбрал две координаты и плавно следую приведенному ниже коду. Однако, если я выбирал больше двух или меньше двух, возникала какая-то ошибка.

Кажется, коды просто следуют бесконечному циклу.

Как я могу исправить этот код??


person Dong-gyun Kim    schedule 07.02.2020    source источник
comment
Пожалуйста, обновите свой вопрос, указав полный текст возникшей ошибки.   -  person quamrana    schedule 07.02.2020
comment
Ваш код немного минимален (вы, вероятно, преувеличили свой минимальный воспроизводимый пример). Где cor_list обновляется в цикле? Пока он не изменится, этот код будет зацикливаться.   -  person Jongware    schedule 07.02.2020


Ответы (1)


--------Обновление автора----------

Теоретически ошибки в коде в вопросе не было. Скорее, похоже, была проблема с прорисовкой.

Исходный код был:

        fig = plt.figure()
        ax = fig.add_subplot(1, 1, 1)
        ax.invert_yaxis()
        ax.axvline(x=firstimg, color='red', linestyle='--')
        scat = ax.scatter(index, depth, s=7, c= 'grey')


        coordinates_length = 0
        while coordinates_length != 2:
            cor_list = []
            DataCursor(scat, index, depth)
            plt.show()
            coordinates_length = len(cor_list)

И тогда я изменил код:

            coordinates_length = 0
            while coordinates_length != 2:
                fig = plt.figure()
                ax = fig.add_subplot(1, 1, 1)
                ax.invert_yaxis()
                ax.axvline(x=firstimg, color='red', linestyle='--')
                scat = ax.scatter(index, depth, s=7, c= 'grey')
                cor_list = []
                DataCursor(scat, index, depth)
                plt.show()
                coordinates_length = len(cor_list)

как это. И это работает.

person Dong-gyun Kim    schedule 07.02.2020