2017-02-15 123 views
0

这里是产生驱动器的列表,并相应增加了按键的Python程序,如何存储传递给Python中的lambda函数的参数?

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

我的头很疼,但你可以使用:

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一个已知值作为参数传递这被称为循环的每个圆环 :)

相关问题