我正在尝试使用Jupyter Dropdowns为两个变量赋值,其中第一个下拉列表是数据中心,第二个下拉列表是该数据中心内的可用站点,以便我可以在代码中进一步使用这些变量。
我尝试了来自不同文章的多个示例,但找不到我所缺少的内容。
我有以下内容:
data_center_environments = {
'US': {
'data_center': 'us..com',
'api_keys': {
'sandbox' : '3_EV',
'dev_parent' : '3_hK',
'stage' :'3_GE',
'prod' : '3_NL',
}
},
'RU': {
'data_center': 'ru..com',
'api_keys': {
'stage_parent' : '3_sN',
'prod_parent' : '3_R9',
}
},
'CN': {
'data_center': 'cn..cn',
'api_keys': {
'stage_parent' : '3_3k',
'prod_parent' : '3_MH',
}
},
'EU': {
'data_center': 'eu..com',
'api_keys': {
'sandbox' : '3_7h',
}
},
}
我创建了两个函数来获取数据中心和站点:
def get_dc(dc_select=None):
dc = data_center_environments.get(dc_select)['data_center']
return dc
def get_site_api_key(dc_select=None, site_select=None):
site_api_key = data_center_environments[dc_select]['api_keys'][site_select]
return site_api_key
在这里我描述两个下拉菜单:
dc_s = widgets.Dropdown(
options = data_center_environments.keys(),
description = 'Data Center:',
disabled = False,
)
site_s = widgets.Dropdown(
options=list(data_center_environments[dc_s.value]['api_keys']),
description = 'API Key:',
disabled = False,
)
def on_value_change(change):
dc = change.new
site_s.options = data_center_environments[dc_s.value]['api_keys']
dc_s.observe(on_value_change, 'value')
这是我在Jupyter Notebook页面上调用它们的方式:
domain = interactive(get_dc, dc_select = dc_s)
site = interactive(get_site_api_key, dc_select = dc_s, site_select = site_s)
display(domain)
display(site)
问题: 0。我有3个下拉菜单,而不是2个 1.更改数据中心值时出现异常 2.当我尝试打印“ domain”,“ domain.value”时,我得到“ None”作为输出
我要实现的目标: 在: 域= 网站= 打印(域,站点)
出: 选择数据中心[下拉:'US','CN','RU'等]->选择'US' 选择站点[下拉“美国”:“产品”,“阶段”,“ dev_parent”,“沙盒”]->选择“产品”
'us..com','3_NL'
我在做什么错?如何更改我的代码以使其工作? 谢谢!
答案 0 :(得分:0)
我最终写了一个返回字典的函数,而我只是从中获取值。 下面的代码是《微件指南》中的教科书示例。
解决方案:
dc = 'US'
domain = widgets.Dropdown(
options = list(data_center_environments),
description = 'Data Center:',
disabled = False,
)
site = widgets.Dropdown(
options=list(data_center_environments[dc]['api_keys']),
description = 'API Key:',
disabled = False,
)
def on_value_change(change):
dc = change.new
site.options = data_center_environments[dc]['api_keys']
domain.observe(on_value_change, 'value')
def creds(data_center, api_key, use_secret):
data_center = data_center_environments[domain.value]['data_center']
api_key = site.value
creds = dict()
creds['data_center'] = data_center
creds['api_key'] = api_key
return creds