1
我想從列表形式存儲的一組數據中動態地構建tkinter中的一些按鈕。我無法解決的是如何在回調函數中添加一個參數。由於回調代碼直到回調時才執行,因此回調中使用的變量已在此時更改了值。動態設置python中的參數回調
這裏有一個代碼(非常)的簡化版本:
from Tkinter import *
from ttk import *
mylist = ['a','b','c','d','e']
class App:
def __init__(self, master):
self.frame = Frame(master)
self.frame.pack()
for i in range (0,len(mylist)):
setattr(self, 'button' + str(i), Button(self.frame, text=mylist[i], command= lambda: self.buttoncall(i)))
getattr(self, 'button' + str(i)).pack(side=LEFT)
def buttoncall(self,input):
print mylist[input]
root = Tk()
app = App(root)
root.mainloop()
相關:[爲什麼地圖()和列表理解的結果是不同的?](http://stackoverflow.com/q/139819/4279) – jfs