変数名で関数を定義しようとしています。
名前はデータベースから取得されます。すべての名前について、ボタンを定義し、個別の処理を行いたい:
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
pajamas はまだ eval() と exec() をサポートしていないようです。
リチャード