ipywidget Dropdown 'new' 值包含多个对象

ipywidget Dropdown 'new' value contains multiple objects

我正在构建一些交互式图表,并正在尝试构建一个基于第一个动态下拉列表的第二个动态下拉菜单。

def update_dropdown(change):
    global country_list
    global country_list2
    global drop2
    print(change.new)
    ##country_list2 = country_list.remove(change.new) <- Not working because of multiple values
    ##drop2.options = country_list2
    
country_list2 = country_list
drop1 = widgets.Dropdown(options=country_list, value='United States', description='Country:')
drop2 = widgets.Dropdown(options=country_list2, value='China', description='Country:')
drop1.observe(update_dropdown)
interactive(compare_country_graph, Country1=drop1, Country2=drop2, Column=widgets.Dropdown(options=column_list, value='GDP', description='Metric:'))

**Ouput:**
{'index': 189}
Uruguay
Uruguay
189
{}

问题是,change.new 正在返回多个值,无论我如何尝试旋转它,我都无法只获得一个值。我试过列表、字典、系列和数组都无济于事。

我尝试过的更多代码:

def update_dropdown(change):
    global country_list
    global country_list2
    global drop2
    global y
    global newword
    y= []
    for letter in str(change.new):
        if letter.isalpha():
            y.append(letter)
    
    new = ""
    for x in y:
        new += x 
        
    print(new)

**Output:**
index
Uruguay
Uruguay 

有谁知道我如何才能从该下拉列表中访问并仅获取国家/地区名称?

您只需在观察函数中指定 names='value' 即可获得您想要的结果。

以下面的代码为例:

import ipywidgets as widgets

country_list=['Uruguay', 'France','United States','Brazil']

def update_dropdown(change):

    print(change.new)

drop1 = widgets.Dropdown(options=country_list, value='United States', description='Country:')
drop1.observe(update_dropdown,names='value')
display(drop1)

并且输出给出: