Я не могу получить доступ к выводу выпадающего виджета в цикле - PullRequest
0 голосов
/ 05 февраля 2020

Я ходил кругами часами. Я пытаюсь получить выпадающий вывод l oop, чтобы убедиться, что результат правильный.

Я получаю выпадающий список, но "output" - нет. Если я выберу «DEV» или «DEV», будет напечатано «DEV». Выход (w) равен none, и l oop выходит в противном случае, если нет *, если код

python (jypter):

source = ["Select Source", "DEV", "TEMP", "PROD"]
source_ = widgets.Dropdown(
    options=source,
    value=source[0],
    description='Select variable:',
    disabled=False,
    button_style=''
)
def sourceURL(b):
    clear_output()
    print(source_.value)

### Drop Down
print("Drop Down")
display(source_)
w = source_.observe(sourceURL)

## print("output: ")
print(w)            ### output is None

#### LOOP
if w == 'DEV':
    print("This is Dev")    
elif w == "TEST":
    print("This is TEST")  
else:
    print("This is PROD")

1 Ответ

0 голосов
/ 05 февраля 2020

Когда вы делаете source_.observe(sourceURL), от этого вызова нет возвращаемого значения. Следовательно, это эквивалентно w = None.

Чтобы получить желаемое поведение, я думаю, вам нужно переместить код в конце вашего скрипта в вашу функцию sourceURL.

import ipywidgets as widgets
from IPython.display import clear_output

source = ["DEV", "TEMP", "PROD"]
source_ = widgets.Dropdown(
    options=source,
    value=source[0],
    description='Select variable:',
    disabled=False,
    button_style=''
)
def sourceURL(b):
#     clear_output()
    w = b['new']

    if w == 'DEV':
        print("This is Dev")    
    elif w == "TEMP":
        print("This is TEMP")  
    else:
        print("This is PROD")

### Drop Down
print("Drop Down")
display(source_)
w = source_.observe(sourceURL, names='value')

...