一次在项目中封装tkinter的时候,在循环遍历生成按钮的时候,发现lambda的入参,总是最后一个,研究了好久终于找到了原因。记录一下,也希望能帮到别人
事故回放:简单写了个例子
解决方法:改成以下写法就可以了,
分析原因:
当使用lambda定义函数时,showFileFrm调用在定义函数时不会得到变量item的值。相反,它会形成一个闭包,这有点像对自己说“我应该寻找我的变量的值”。在我被召唤的时候“.当然,函数是在循环结束后调用的,所以在那个时候,我总是等于循环中的最后一个值。
感谢下面的兄弟提供参考:http://www.imooc.com/wenda/detail/572383