Taipy图片点击事件传参报错,如何正确向回调函数传参?
解决Taipy图片点击事件传递参数的问题
问题原因
你当前的写法<|{images_folder+r'\juice1.png'}|image|on_action=select_category(cat)|>是直接调用了select_category(cat),而非将可调用的函数对象绑定到on_action事件上。Taipy会把这个调用的返回值(此处为None)当作要执行的回调,因此报错提示“不是函数”。
正确实现方式
方法1:使用lambda表达式
通过lambda匿名函数包装回调,确保传递的是可调用对象,同时传入state和自定义参数cat:
<|{images_folder+r'\juice1.png'}|image|on_action=lambda state: select_category(state, cat)|>
注意:lambda的第一个参数必须是state,因为Taipy的回调函数默认会把state作为第一个参数传入。
方法2:使用functools.partial
先导入functools.partial,再用它固定回调函数的参数:
from functools import partial # 页面定义中使用 <|{images_folder+r'\juice1.png'}|image|on_action=partial(select_category, cat=cat)|>
partial会生成一个新的可调用对象,事件触发时,Taipy会自动传入state作为第一个参数,同时带上你指定的cat参数。
回调函数验证
保持回调函数原有结构,第一个参数为state,第二个为自定义参数:
def select_category(state, cat): print(cat)
内容的提问来源于stack exchange,提问作者Yaqoub Al-Harthi
相关产品推荐
相关产品推荐

