Python 向使用IPyWidget创建的按钮添加on_click方法
我正在使用ipywidgets创建仪表板 我使用循环创建了一组按钮: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
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种不同的点击方法。