【发布时间】:2020-01-08 20:51:26
【问题描述】:
我正在使用 ipywidgets 允许用户选择一些值,并且我想将小部件内的函数结果分配给函数外的变量并在笔记本的下一个单元格上使用它(我尝试使用全局变量,但我无法使其工作):
def issuer_choice():
from ipywidgets import widgets
from IPython.display import display, clear_output
import pandas as pd
def myfunc(idnum):
return data.loc[idnum]['cod']
def on_button_clicked(b):
global ticker
ticker = myfunc(w.value)
with output:
clear_output()
print('Ticker CIQ: ' + ticker)
data = pd.read_csv('data.csv', sep=',', index_col = 1)
w = widgets.Dropdown(options=list(data.index), description = 'Label:')
button = widgets.Button(description="Obtain ID")
output = widgets.Output()
display(w)
display(button, output)
button.on_click(on_button_clicked)
return ticker
当以result = issuer_choice() 调用此函数并单击按钮时,代码每次都会正确打印ticker,这意味着在选择选项时会更新函数内部的值。但是,在下一个单元格上调用print(result) 会打印None,这意味着ticker 没有被分配给result?
*data.csv 只是一列 DataFrame,其中存储了 ID 和名称的列表。
我认为它必须与 ticker 变量的范围有关,但我不知道。我将不胜感激。
【问题讨论】:
标签: python ipywidgets