Я использую интерактивный выпадающий список ipywidget, чтобы отфильтровать определенное количество данных и построить график с использованием графика.
Моя проблема связана с обновлением выпадающего виджета: вот упрощенный пример:
import ipywidgets as widgets
from ipywidgets import *
from IPython.display import display, clear_output, HTML
def update_drop2(*args):
if Drop1.value=='R':
Drop2.options = {'un':'1','trois':'3','quatre':'4'}
if Drop1.value=='B':
Drop2.options = {'un':'1','trois':'3','quatre':'4'}
if Drop1.value=='G':
Drop2.options = {'deux':'2','quatre':'4','trois':'3'}
def action(*args):
print('action')
Drop1 = widgets.Dropdown(
options = {'red':'R','blue':'B','green':'G'},
value = 'R',
description='Drop1 :',
disabled=False,
continuous_update=False,
style = {'description_width': 'initial'}
)
Drop2 = widgets.Dropdown(
options = {'un':'1','deux':'2','trois':'3'},
value = '3',
description='Drop2 :',
disabled=False,
continuous_update=False,
style = {'description_width': 'initial'}
)
display(Drop1,Drop2)
Drop1.observe(update_drop2,'value')
Drop2.observe(action,'value')
drop1 изменяет параметры drop2.любое изменение drop1 (и drop2 должно запустить действие (здесь просто распечатка для примера)
, когда список опций drop2 отличается и изменяется drop1, drop2.valueавтоматически устанавливается на первое значение нового списка, даже если выбранное значение уже присутствует в предыдущем списке. Есть ли возможность сохранить это значение, если оно все еще доступно в новом списке? (пример: выбрать drop1 = R,drop2 = 'trois, а затем выполнить drop1 =' G ': для drop2 автоматически устанавливается значение' 2 '. Выберите drop1 = R, drop2 = 3, а затем выполните drop1 =' B ': drop2 останется на уровне '3')
если я попытаюсь вызвать drop2.value после обновления drop2.options, которые вносят 2 изменения в drop2 = 2 действия ... я не мог найти способ избежать этого ..Кроме того, иногда у меня есть повторение действия, а иногда нет действий ...
Спасибо за вашу помощь