这里是python程序,它生成一个驱动器列表并相应地添加按钮,
drives = win32api.GetLogicalDriveStrings()
drives = (drives.split('\000')[:-1])
for d in range(0,len(drives)):
box.add_widget(Button(text=drives[d],on_press = lambda x: self.open_drive(s=drives[0+d])))
self.add_widget(box)
def open_drive(self,s):
print(str(s))
当我点击按钮它应该打印C:D:E:依此类推,但是它被卡在列表中的最后一个驱动器上,我如何将参数存储在该lambda函数中?
答案 0 :(得分:0)
我的头疼,但你可以使用:
for d in range(0,len(drives)):
box.add_widget(Button(text=drives[d],
on_press = (lambda d: lambda x: self.open_drive(s=drives[0+d]))(d))
这样您构建的lambda function
会返回另一个lambda function
,只有最后一个使用已知值作为参数传递lambda
< strong>被称为循环的每个cicle :)