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

ボタンの「コマンド」パラメータ関数はいつ実行されますか?

2024 年 11 月 9 日に公開
ブラウズ:786

When is the Button\'s \

ボタンの「command」パラメータ宣言時の実行: 謎を解く

Python tkinter では、ボタン ウィジェットの「command」パラメータは、実行する関数を指定することを目的としています。ボタンが押されたときに実行されます。ただし、初心者によくある誤解は、ボタン宣言時にも「コマンド」に関連付けられた関数が実行されるということです。

この動作を理解するには、Python が関数パラメーターを処理する方法を詳しく調べる必要があります。関数をパラメータとして渡す場合、次の 2 つの可能性があります:

  • 関数オブジェクトを渡す:これは、command=Hello.
  • のように、単純に関数名を参照することによって実現されます。関数の戻り値を渡す: これは、コード例の command=Hello().

のように、関数呼び出しを括弧で囲むことによって行われます。あなたが指定した場合、Hello() はパラメータとして Button ウィジェットに渡されます。これは、関数が直ちに実行され、その戻り値が「command」に渡されることを意味します。 Hello() は何も返さないため、None を返します。これはボタンの "command" パラメータに割り当てられ、事実上何も行われません。

この問題を解決して、ボタンがクリックされたときのみ関数を実行するには、次のようにします。次のように関数オブジェクトを渡す必要があります:

hi = Button(frame, text="Hello", command=Hello)

このように、ボタンがを押すと、Hello() 関数が呼び出され、その意図したコードが実行されます。

さらに、関数に引数を渡す必要がある場合は、例に示すように、ラムダ式を使用して関数呼び出しをラップできます。以下:

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

この場合、ラムダ式は、Goodnight() 関数がボタンの宣言時に実行されず、ボタンがクリックされてコマンドが実行されるまで待機することを保証します。

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

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

Copyright© 2022 湘ICP备2022001581号-3