Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用JupyterNotebook从ipywidget函数定义全局变量_Python_Ipywidgets - Fatal编程技术网

Python 使用JupyterNotebook从ipywidget函数定义全局变量

Python 使用JupyterNotebook从ipywidget函数定义全局变量,python,ipywidgets,Python,Ipywidgets,我使用ipywidgets允许用户选择一些值,我希望将小部件内函数的结果分配给函数外的变量,并在笔记本的下一个单元格中使用它(我尝试使用全局变量,但无法使其工作): 将此函数调用为result=issuer\u choice()并单击按钮时,代码每次都能正确打印ticker,这意味着在选择选项时更新函数中的值。但是,在下一个单元格中调用print(result)会打印None,这意味着ticker不会分配给result *data.csv只是一列数据框,其中存储了ID和名称列表 我想它应该是关于

我使用ipywidgets允许用户选择一些值,我希望将小部件内函数的结果分配给函数外的变量,并在笔记本的下一个单元格中使用它(我尝试使用全局变量,但无法使其工作):

将此函数调用为
result=issuer\u choice()
并单击按钮时,代码每次都能正确打印
ticker
,这意味着在选择选项时更新函数中的值。但是,在下一个单元格中调用
print(result)
会打印
None
,这意味着
ticker
不会分配给
result

*data.csv只是一列数据框,其中存储了ID和名称列表


我想它应该是关于
ticker
变量的范围,但我不知道。非常感谢您的帮助。

如果您要求使用
global ticker
,请确保
ticker
已经是您的全局范围中定义的名称,即使您将其设置为“无”,也可以稍后在您的全局范围中调用它

另外,如果你用一个简单的假数据框来代替像
read\u csv
调用这样的东西,它会让你的例子更容易理解和使用

ticker=None
def issuer_选项():
从ipywidgets导入小部件
从IPython.display导入显示中,清除\u输出
作为pd进口熊猫
def myfunc(idnum):
返回数据。loc[idnum]['cod']
def on_按钮_单击(b):
全球股票行情
ticker=myfunc(w.value)
输出:
清除输出()
打印('Ticker CIQ:'+str(Ticker))
data=pd.Series({'A':1,'B':2,'C':3})
data=data.to_frame(name='cod')
w=widgets.Dropdown(options=list(data.index),description='Label:')
按钮=小部件。按钮(description=“获取ID”)
output=widgets.output()
显示器(w)
显示(按钮、输出)
按钮。单击时(单击时)
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