ホームページ >バックエンド開発 >Python チュートリアル >ボタンパラメータ「コマンド」がtkinterで宣言されると実行されるのはなぜですか?

ボタンパラメータ「コマンド」がtkinterで宣言されると実行されるのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-19 07:58:30697ブラウズ

Why Is Button Parameter

ボタン パラメータの "command" 実行の説明

Python の tkinter では、ボタンの "command" パラメータがなぜ必要なのかという疑問が頻繁に発生します。宣言されたときに実行されますか?この動作は初心者にとって混乱を招く可能性があります。

これを理解するために、問題の原因となっている Python コード スニペットを調べてみましょう:

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

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

書かれているように、「command」パラメータが結果に設定されています。 Hello 関数の呼び出し。ただし、Python では、Hello() などの括弧を含む関数を呼び出すと、関数が生成する値が返されます。 Hello の場合、return 文がないため None が返されます。

そのため、Button オブジェクトの作成時に、「command=Hello()」を「command=None」と解釈します。その結果、Hello 関数が即座に実行され、「こんにちは!」と出力されます。

この問題を回避し、ボタンが押されたときにのみ Hello 関数を実行するには、関数オブジェクト自体を括弧なしでコマンドとして渡す必要があります。

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

This Hello 関数は、宣言時ではなく、ボタンがクリックされたときに確実に呼び出されます。

関数に引数を渡す必要がある場合は、ラムダ式を使用してパラメータなしの呼び出し可能関数を作成します。これにより、関数をすぐに評価することを回避し、関数をコマンド パラメーターに渡すことができます:

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

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。