首页 > 解决方案 > 如何让参数返回他自己的名字?

问题描述

我的代码

for i in list_tasks:
    globals()['icon1%s' % i].bind(on_press=lambda x: **print(#here I want to print his name)**

例如globals()['icon1%s' % i]是“icon1clock”我希望它在印刷机上打印他自己的名字(icon1clock)。

标签: pythonlistkivy

解决方案


棘手的部分是定义一个包装另一个的 lambda 表达式,而不是一个名称。我不会费心去尝试。编写一个为您创建回调的函数;回调可以是一个变量的闭包。

def make_callback(name):
    def _(x):
        print(name)
    return _


# *Not* icon1clock = ...
icons = {
    'clock': ..., 
}

for i in list_tasks:
    icons[i].bind(on_press=make_callback(i))

推荐阅读