1
我嘗試用變量名定義一個函數。eval中的函數定義
名稱從數據庫中檢索。對於每一個名字,我希望定義一個按鈕,並具有獨立的處理:
title=['BNL','CE']
for i in range(0,len(title)):
panelvpu.add(Button(title[i]))
for i in range(0,len(title)):
eval('def onButtonClick'+title[i]+'(self, event):')
eval(' Window.alert("Yes")')
按鈕定義是好的,但在定義函數的事件的處理提供了一個錯誤
im1 SyntaxError: at index 4 in "def onMenu1Item1(self):
Window.alert("Item 1 selected")": expected ';', got 'onMenu1Item1'
反饋後,我改爲
title=['BNL','CE']
for t in title : panelvpu.add(Button(t))
for t in title:
def_code = "print t"
exec(def_code)
只是爲了得到感覺;在python下這工作正常。 但是我用睡衣和最後一個代碼執行賴斯的錯誤,說明
im1 TypeError: iter is undefined
看來,睡衣是不支持的eval()和exec()呢。
理查德
使用'exec',但不要 – JBernardo
這對我來說看起來不像是單獨的處理... –
看起來您正試圖爲回調命令創建一個功能工廠;好的想法,但是Python有更好的工具可以讓你做到這一點。 – Thomas