「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ボタン「コマンド」が宣言されるとすぐに実行されるのはなぜですか?

ボタン「コマンド」が宣言されるとすぐに実行されるのはなぜですか?

2024 年 11 月 1 日に公開
ブラウズ:899

Why Does the Button \

宣言時にボタン パラメーター "command" が実行されるのはなぜですか?

Python では、ボタン ウィジェットの "command" パラメーターが次の役割を果たします。コールバック関数を定義します。ただし、このコールバック関数がボタンの宣言と同時に実行されるように見えると、ユーザーは困惑する可能性があります。

この問題は、「command」パラメーターに関数オブジェクトではなく関数呼び出し式が割り当てられている場合に発生します。例:

def Hello():
    print("Hi there!")

Button(frame, text="Hello", command=Hello())  # Function call expression

このコードでは、式「Hello()」はすぐに Hello 関数を呼び出し、戻り値を返します。その結果、ボタンが作成される前にコールバック関数が実行され、「こんにちは!」というメッセージが表示されます。メッセージがコンソールに出力されます。

この問題を回避し、関数オブジェクトを「command」パラメータに割り当てるには、括弧なしで関数名を使用します。

Button(frame, text="Hello", command=Hello)  # Function object

Function オブジェクトは、コールバックが呼び出されたときに実行されるコードへの参照を保持します。さらに、引数を渡す必要がある場合は、ラムダ式を使用できます。

Button(frame, text="Hello", command=lambda: Goodnight("Moon"))

この場合、ラムダ式は Goodnight("Moon") 呼び出しをラップし、ボタンがクリックされるまで実行を遅らせます。

リリースステートメント この記事は次の場所に転載されています: 1729295836 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3