2010-12-06 12 views
3

何らかの理由で、このボタンはボタンを押さずに自動的にbot_analysis_frameを呼び出します。私はそれがcommandが引数を持つ関数であることを推測しています。ボタンコマンドが自動的に呼び出されます

ボタンにこの機能を呼び出し、必要な変数を渡す方法がありますか?を押すとのみが押されますか?

Button(topAnalysisFrame, text='OK', command=bot_analysis_frame(eventConditionL, eventBreakL)).pack(side=LEFT) 
+0

可能な重複:

Button(topAnalysisFrame, text='OK', command=bot_analysis_frame(eventConditionL,eventBreakL)).pack(side=LEFT) 

あなたはそうのようなラムダを使用することができます/ 5767228 /なぜボタンパラメータコマンド実行時に宣言されたか) – nbro

答えて

13

ここをクリックしてcallbacksを読んでください。

この関数の結果は、関数自体ではなくコマンド引数に格納しています。

私はこれを信じる:

command = lambda: bot_analysis_frame(eventConditionL,eventBreakL) 

はあなたのために働くかもしれません。

+2

ループ内で作成されたクロージャは「期待通り」には機能しません(実際には正しく動作します。 、値ではない)。 '' range(5)のiのために '' lambda:print(i) ''で作成されたすべての関数は、 'i'の最終値を出力します。4.定義時間にバインドされたデフォルトの引数で、 'lambda = i:print(i)'が動作します。 – delnan

1

これまでにこれまでに回答があったと確信しています。この代わりに:[?なぜ宣言したときに実行ボタンのパラメータ「コマンド」である](http://stackoverflow.com/questionsの

Button(topAnalysisFrame, 
     text="OK", 
     command=lambda: bot_analysis_frame(eventConditionL, eventBreakL)).pack(side=LEFT) 
関連する問題