ホームページ > バックエンド開発 > Python チュートリアル > Tkinter ボタンが作成後すぐにコマンドを実行するのはなぜですか?

Tkinter ボタンが作成後すぐにコマンドを実行するのはなぜですか?

Susan Sarandon
リリース: 2024-12-21 03:36:16
オリジナル
212 人が閲覧しました

Why Does My Tkinter Button Execute Its Command Immediately Upon Creation?

作成時のボタン コマンドの実行

提供されたコードでは、ボタン ウィジェットが、コマンド オプションを呼び出した結果に設定されて作成されます。引数を指定した関数を使用すると、コマンドが即時に実行されます。この問題に対処するには、Tkinter でのイベント処理がどのように機能するかを理解することが重要です。

Tkinter では、イベント処理は、関数をイベント (ボタンのクリックなど) に関連付けることによって機能します。イベントが発生すると、Tkinter は関連する関数を呼び出します。ただし、提供されたコードでは、コマンド オプションには、関数自体への参照ではなく、関数 button('hey') を呼び出した結果が含まれています。

したがって、コードは本質的に次と同じことを行います。

result = button('hey')
b = Button(admin, text='as', command=result)
ログイン後にコピー

その結果、ボタンが作成されるとコマンドはすぐに実行され、'hey' と 'het' が出力され、ボタンがクリックされると何も表示されません。この問題は、コマンドがすでに実行されているために発生します。

これを修正するには、コマンド オプションに、呼び出しの結果ではなく、関数への参照を含める必要があります。例:

b = Button(admin, text='as', command=button)
ログイン後にコピー

コマンドに引数が必要な場合は、インライン関数定義を可能にするラムダ関数を使用することもできます。例:

b = Button(admin, text='as', command=lambda: button('hey'))
ログイン後にコピー

これにより、呼び出されるときに button('hey') を呼び出し、必要な機能を提供する匿名関数が作成されます。

以上がTkinter ボタンが作成後すぐにコマンドを実行するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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