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

Barbara Streisand
リリース: 2024-10-19 07:57:02
オリジナル
1068 人が閲覧しました

When is the Button's

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

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

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

  • 関数オブジェクトを渡す: これは、command=Hello.
  • など、単に関数名を参照することによって実現されます。関数の戻り値を渡す: これは、command=Hello() のように関数呼び出しを括弧で囲むことによって行われます。

提供したコード例では、Hello() がパラメータとして渡されます。 Button ウィジェット。これは、関数がすぐに実行され、その戻り値が「command」に渡されることを意味します。 Hello() は何も返さないため、None を返します。これはボタンの「command」パラメータに割り当てられ、事実上何も行われません。

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

<code class="python">hi = Button(frame, text="Hello", command=Hello)</code>
ログイン後にコピー

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

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

<code class="python">hi = Button(frame, text="Hello", command=lambda: Goodnight("Moon"))</code>
ログイン後にコピー

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

以上がボタンの「コマンド」パラメータ関数はいつ実行されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート