Matplotlib: удалить слайдер после повторного нажатия кнопки

Я хочу, чтобы ползунок (f01) исчез при нажатии на кнопку WR3 (= 'WR2.2'). Чтоб нет наложения и слайдер новый. Я понятия не имею, как обновить или удалить этот полный слайдер. Вот мой код:

from numpy import pi, sin
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider, Button, RadioButtons
from matplotlib.patches import Ellipse
from scipy.optimize import fsolve
import pylab
w0=1.7
lamb=0.4119
f0=lamb*1.0/(299.792458)
#lamb=f0*1.0/(299.792458)
d_in=80.0
R1=46.672
R2=686.468
foc=1/((1/R1)+(1/R2))
c=299792458000.0
zR=np.pi*w0**(2)/(c/(f0*1000000000.0))
fig = plt.figure(figsize=(20,10))
ax = fig.add_subplot(111)
x_start=0.0
x_end=500.0
ax.xaxis.set_ticks(np.arange(x_start,x_end+20.0, 20.0))
axis_color = 'lightgoldenrodyellow'
fig.subplots_adjust(left=0.25, bottom=0.35)
x = np.arange(x_start,x_end, 0.01)

w0_0 = 1.7
f0_0 = 727.82825
w1_0=w0*np.sqrt(1.0/(((d_in)/foc-1.0)**(2)+(zR/foc)**(2)))
d_in_0=80.0
d_out_0=foc+(d_in-foc)/(((d_in)/foc-1.0)**(2)+(zR/foc)**(2))

# function 1 and 2
def signal(w0,f0):
    return w0*np.sqrt(1.0+(x/(np.pi*w0**(2)/(c/(f0*1000000000.0))))**(2))
[line] = ax.plot(x, signal(w0_0, f0_0), linewidth=2, color='red')
WR3_button_ax = fig.add_axes([0.025, 0.7, 0.05, 0.05])
WR3_button = Button(WR3_button_ax, 'WR2.2:', color=axis_color, hovercolor='0.975')

# Define an axes area and draw a slider in it
w0_slider_ax  = fig.add_axes([0.25, 0.2, 0.65, 0.03], axisbg=axis_color)
w0_slider = Slider(w0_slider_ax, 'w0 [mm]', 0.1, 9.2, valinit=w0_0)

def WR3_button_on_clicked(mouse_event):
    f01_slider_ax = fig.add_axes([0.25, 0.25, 0.65, 0.03], axisbg=axis_color)
    f01_slider = Slider(f01_slider_ax, 'f0 [GHz]', 340.0, 500.0, valinit=d_in)
    w0_slider.set_val(1.5)
    f01_slider.set_val(340.0)
    def sliders_on_changed(val):
        line.set_ydata(signal(w0_slider.val, f01_slider.val))
        fig.canvas.draw_idle()
    f01_slider.on_changed(sliders_on_changed)

WR3_button.on_clicked(WR3_button_on_clicked)

plt.show()

Я создаю эту функцию, и речь идет о слайдере f01. Спасибо

Вы имеете в виду slider_ax.remove()? Код немного хаотичен, поэтому было бы неплохо, если бы вы подробно объяснили, чего вы пытаетесь достичь в целом.

ImportanceOfBeingErnest 03.08.2018 16:11

Простите за это. Собственно, это то, что мне нужно. Если я вставлю этот код сразу за 3-ей строкой снизу, ползунок создается при нажатии на кнопку WR3 и сразу удаляется. Я хочу создать кнопку, щелкнув сначала, а затем еще одним щелчком, чтобы удалить и создать снова, чтобы при еще одном нажатии кнопки кнопка создавалась новой, а старая удалялась.

Mattes 03.08.2018 16:22

Как уже было сказано, у меня есть некоторые проблемы с пониманием логики здесь. В качестве общего совета: можете ли вы определить все ползунки и кнопки, которые вам когда-либо понадобятся вне какой-либо функции, и установить оси тех, которые вам не нужны, невидимыми (.set_visible(False)). Внутри ваших функций обратного вызова установите требуемую видимость. И избегайте определения функций внутри функций (в целом это возможно, но очень затрудняет отслеживание того, где что-то происходит).

ImportanceOfBeingErnest 03.08.2018 16:42
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
822
0

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