在为Jupiter中的python应用程序构建一个原型前端时,我使用ipywidget来促进与后端的交互(基本上是一个推荐引擎)。在
理想的行为是当点击一个按钮时,根据用户的反馈(在一定程度上对项目评分)刷新“UI”。
因此,新的项目将基于此反馈显示。在
但是按钮。单击(函数),不允许:返回输出(用户输入)的函数
我也不能将参数(前几轮的输入)传递给
功能。在
我可以通过以下方式解决:为输出设置全局参数(不是我最喜欢的
解决方案之一)
但我无法解决:将输入传递到函数
我已经使用了一个全局变量和一个函数定义来将输入传递给被调用的函数,但是这个输入不是全局的。在
理想情况下,它应该这样工作:def on_button_clicked(inputs):
item_characteristics = pd.read('items.cvs')
dash, inputs = recommendation_dashboard(input, item_characteristics)
display(dash)
return inputs
def recommendation_dashboard(user_input, item_characteristics):
items = function to pick items based on user_input from previous round and item characteristics.
form = [set of ipywidgets to display information on items,
set of buttons to rate said items]
return HBox(form),inputs
理想情况下:
new_items_button.on_click(input = on_button_clicked (input) )
HBox([new_items_button])
所以函数要经过以下步骤:有一个函数可以处理空的用户输入(随机生成
示例)
显示项目
用户给出反馈(勾选不同的单选按钮),之后
用户单击“新建项目”按钮并:
函数应返回输入的反馈并将其传递给
当点击按钮
新项目,基于此输入显示一组新的项目
(可随后评级)。在
当我试图使用全局变量返回输入并通过定义以下内容将输入传递给函数时:
new_items_button.on_click(on_button_clicked (input))TypeError: 'NoneType' object is not callable
我不认为这里实现了任何奇特的错误处理,所以很难解析。在
当我这么做的时候
new_items_button.on_click(input = on_button_clicked (input) )TypeError: on_click() got an unexpected keyword argument 'inputs'
(这是合乎逻辑但令人沮丧的)
无法检索输入,因为输入表单是使用函数创建的,因此无法全局访问输入。。在
那么,有没有可能将变量传递给一个由onjuclick事件调用的函数?(因为这些变量在按钮按下之间会发生变化,所以没有静态定义就足够了)。在