обновление выпадающего виджета (ipywidget) - PullRequest
0 голосов
/ 13 мая 2018

Я использую интерактивный выпадающий список 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 действия ... я не мог найти способ избежать этого ..Кроме того, иногда у меня есть повторение действия, а иногда нет действий ...

Спасибо за вашу помощь

...