Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.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 向使用IPyWidget创建的按钮添加on_click方法_Python_Button_Onclick_Grid_Ipywidgets - Fatal编程技术网

Python 向使用IPyWidget创建的按钮添加on_click方法

Python 向使用IPyWidget创建的按钮添加on_click方法,python,button,onclick,grid,ipywidgets,Python,Button,Onclick,Grid,Ipywidgets,我正在使用ipywidgets创建仪表板 我使用循环创建了一组按钮: from ipywidgets import GridspecLayout grid = GridspecLayout(4, 3) def create_expanded_button(description, button_style): return Button(description=description, button_style=button_style, layout=Layout(height='a

我正在使用ipywidgets创建仪表板

我使用循环创建了一组按钮:

from ipywidgets import GridspecLayout

grid = GridspecLayout(4, 3)
def create_expanded_button(description, button_style):
    return Button(description=description, button_style=button_style, layout=Layout(height='auto', width='auto'))


for i in range(4):
    for j in range(3):
        grid[i, j] = create_expanded_button('Button {} - {}'.format(i, j), 'warning')
grid
这是文档中的代码。 使用此代码,您可以创建一个具有16个按钮的仪表板:

问题是,既然所有按钮都被称为相同的按钮,那么如何处理按钮的每次点击方法的策略是什么。 按钮是否有一种“id”

想象一下,通过单击每个按钮,我想要在线获取特定数据。如何进行

谢谢。

试试这个:

def on_btn_单击(btn):
如果btn.description==“按钮0-0”:
#在按钮0上执行某些操作-单击0
elif btn.description==“按钮0-1”:
#在按钮0上执行操作-单击1
...
对于范围(4)中的i:
对于范围(3)内的j:
网格[i,j]。单击时(单击时)

首先定义API和调用函数,然后迭代创建按钮,怎么样

从ipywidgets导入GridspecLayout,按钮
grid=GridspecLayout(3,1)
def调用api_1(按钮):
打印('calling_api_1')
def调用api 2(按钮):
打印('calling_api_2')
def调用api_3(按钮):
打印('calling_api_3')
api_dict={
“API 1”:调用API 1,
“API 2”:调用API 2,
“API 3”:调用API 3,
}
对于枚举(api_dict.items())中的索引(api_name,func):
按钮=按钮(描述=api\u名称)
按钮。单击时(func)
网格[索引,0]=按钮
网格

但是当我在单击上对方法进行编码时,我如何知道单击了哪个按钮?想象一下,当单击左上角的第一个按钮时,我希望a=1,当我单击第一行的第二个按钮时,a=2?例如,实际情况是从api读取数据,根据单击的按钮调用不同的api读取实例股票值。您可以获取btn arg传递的信息,然后决定执行什么操作。如果不能根据每个按钮的信息来区分这些按钮,那么可以编写12种不同的点击方法。