Я пытаюсь создать свой собственный интерактивный селектор пути, используя интерактивные виджеты из ipywidgets, там должно быть три поля выбора, второй наблюдает значение из первого, а третий наблюдает выбранное значение из предыдущих обоих, и это моя проблема, я не могу понять, как добавить третий виджет.
Вот мой функциональный код:
import os
import getpass
import glob
import ipywidgets as widgets
from ipywidgets import VBox, HBox, Label, interactive, Box
def return_paths(raw_path):
"""Create a list of folders in a given path
skipping those with begin with '.' and are empty
"""
paths = [folder for folder in os.listdir(raw_path)
if os.path.isdir(os.path.join(raw_path, folder)) and not folder.startswith('.')
and len(os.listdir(os.path.join(raw_path, folder))) != 0
]
paths.sort()
return paths
def get_select2(*args):
options = return_paths(os.path.join(raw_path, select_1.value))
select_2.options = options
def process(Feature,ID):
print(Feature,ID)
def run():
w = interactive(process, Feature=select_1, ID=select_2)
display(HBox([Label('Select the folder you want process:'), w.children[0], w.children[1]]))
display(w.children[2])
user = getpass.getuser()
raw_path = f'/home/{user}/downloads/0_raw/'
raw_folders = []
select_1 = widgets.Select(
options=return_paths(raw_path),
)
select_2 = widgets.Select()
select_3 = widgets.Select()
select_1.observe(get_select2)
run()
В данный момент работает с двумя выбранными полями, как я могу добавить третий? Есть идеи?