Не могу получить vaule виджета, который инициализируется внутри функции - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть функция, которая генерирует выпадающий виджет из ipywidgets со списком каталогов в качестве параметров. Моя проблема в том, что если я реализую глобальный виджет вне функции, он не загрузит новый список, чтобы сгенерировать раскрывающийся список с изменяющимися значениями. Моя идея, я пишу func. Который воссоздает выпадающий список каждый раз. Не очень эффективно, но это работает. Но теперь я хочу наблюдать за выпадающим списком, чтобы получить его значение после изменения. Проблема в том, что наблюдатель вызовет другую функцию, которая не может достичь значения через выпадающий список. значение причины, по которой раскрывающийся виджет не является глобальным. Что я могу изменить?

def path_output(d):
    clear_output()
    global lowest_dirs
    value=path_input.value
    if os.path.isfile(value) == True:
        html_ausgabe ="""<h1><center>%s</center></h1>""" % "-- This is a file! --" 
        display(HTML(html_ausgabe))
        welcome_msg() 
    elif os.path.isdir(value) == True:
        global lowest_dirs
        lowest_dir()
        header("test")
    else:
        msg = "-- \""+value+"\" is no directory --"
        html_ausgabe ="""<h1><center>%s</center></h1>""" % msg
        display(HTML(html_ausgabe))
        welcome_msg() 

def header(self):
    global dropdown_hd_value
    clear_output()
    #print(lowest_dirs)
    dropdown_hd=widgets.Dropdown(
        options=lowest_dirs, 
        value=None, 
        description='Path:', 
        disabled=False, 
        layout = Layout(display='center',align_items='center', width='80%')
    )
#     print(dropdown_hd.value)
    if dropdown_hd.value == None:
        msg = "-- Your are now in the \""+path_input.value+"\" directory sdfs--"
    else:
        msg = "-- Your are now in the \""+path_input.value+"asdsa"+"\" directory sdfs--"

    html_ausgabe ="""<h1><center>%s</center></h1>""" % msg
    display(HTML(html_ausgabe))
    display(HBox([dropdown_hd, button_reset]))

    dropdown_hd.observe(dropdown_hd_getvalue, 'value')
    dropdown_hd_value=dropdown_hd.value



def dropdown_hd_getvalue(b):
    clear_output()
    global dropdown_hd
    global dropdown_hd_value
    print(dropdown_hd.value)

Что хотите? Я хочу получить выпадающий список, который можно восстановить, прочитав измененный список каталогов.

...