2017-02-15 97 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一個已知值作爲參數傳遞這被稱爲循環的每個圓環 :)

相關問題