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

Patricia Arquette
リリース: 2024-10-19 07:58:30
オリジナル
575 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!