Теряется ссылка на Matplotlib TextBox widget если программа запущена повторно

Пытаюсь освоить matplotlib. Использую pyton + spyder из Anaconda под Windows 10. Хочу сделать вызываемую функцию с интерактивными возможностями matplotlib. Пробую запуск кода из документации разными способами.

Если вызвать функцию test(1) то код работает как полагается.

Вызов test(0) выполняет промежуточный шаг и затем вызывает test(1). В этом случае ссылка на TexBox widget теряется и взаимодействие с графиком потеряно.

Возможно ли сохранить ссылку на TexBox widget при вызове test(0)? Почему она теряется?

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import TextBox

def test(counter): 
    if counter == 0 :
        print('step 1')
        counter = counter +1
        step(counter)
        
    elif counter == 1:
        t = np.arange(-2.0, 2.0, 0.001)
        fig, ax = plt.subplots()
        
        s = t ** 2
        initial_text = " 2"
        l, = plt.plot(t, s, lw=2)
        plt.subplots_adjust(bottom=0.2)


        def submit(text):
            t = np.arange(-2.0, 2.0, 0.001)
            ydata = t**eval(text)
            l.set_ydata(ydata)
            ax.set_ylim(np.min(ydata), np.max(ydata))
            plt.draw()

        axbox = plt.axes([0.1, 0.05, 0.8, 0.075])
        text_box = TextBox(axbox, 'Evaluate', initial=initial_text)
        text_box.on_submit(submit)

        plt.show()
        print('returning TexBox')
        return(text_box)
    
    else : print('esle condition has worked in test function')

def step(counter):
    print('function step counter = ', counter)
    test(counter)

Ответы (0 шт):