Python tkinter では、ボタン ウィジェットの「command」パラメータは、実行する関数を指定することを目的としています。ボタンが押されたときに実行されます。ただし、初心者によくある誤解は、ボタン宣言時にも「コマンド」に関連付けられた関数が実行されるということです。
この動作を理解するには、Python が関数パラメーターを処理する方法を詳しく調べる必要があります。関数をパラメータとして渡す場合、次の 2 つの可能性があります:
のように、関数呼び出しを括弧で囲むことによって行われます。あなたが指定した場合、Hello() はパラメータとして Button ウィジェットに渡されます。これは、関数が直ちに実行され、その戻り値が「command」に渡されることを意味します。 Hello() は何も返さないため、None を返します。これはボタンの "command" パラメータに割り当てられ、事実上何も行われません。
この問題を解決して、ボタンがクリックされたときのみ関数を実行するには、次のようにします。次のように関数オブジェクトを渡す必要があります:
hi = Button(frame, text="Hello", command=Hello)
このように、ボタンがを押すと、Hello() 関数が呼び出され、その意図したコードが実行されます。
さらに、関数に引数を渡す必要がある場合は、例に示すように、ラムダ式を使用して関数呼び出しをラップできます。以下:
hi = Button(frame, text="Hello", command=lambda: Goodnight("Moon"))
この場合、ラムダ式は、Goodnight() 関数がボタンの宣言時に実行されず、ボタンがクリックされてコマンドが実行されるまで待機することを保証します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3