作成時にボタン コマンドをすぐに実行する理由
Tkinter では、コマンドをボタンに割り当てると予期しない動作が発生する可能性があります。ボタンがクリックされたときではなく、ボタンの作成時にすぐに実行されます。これは、コマンド オプションの動作方法によるものです。
コマンド パラメーターを Button(... command=button('hey')) として指定すると、実際には button(' を呼び出した結果が渡されます。 hey') コマンドオプションに。これは、ボタン関数がすぐに実行され、戻り値がコマンド パラメーターに割り当てられることを意味します。
解決策: 関数への参照を渡す
これを回避するにはこの問題では、関数をすぐに実行するのではなく、関数への参照を渡す必要があります。これは、ラムダ関数、functools.partial、または中間関数を使用して実行できます。
Lambda 関数の使用
Lambda 関数は、次のような匿名関数を作成する簡単な方法を提供します。参考として使用してください。例:
b = Button(... command=lambda: button('hey'))
このラムダ関数は、呼び出されるときに引数 'hey' を指定してボタン関数を実行する名前のない関数を作成します。この参照は、ボタンのコマンド パラメータに渡すことができます。
Alternative Approaches
結論
関数をすぐに実行するのではなく、関数への参照を渡すことで、ボタン コマンドが次の場合にのみ実行されるようにすることができます。意図したとおり、ボタンがクリックされました。
以上がTkinter ボタンがクリック時ではなくすぐにコマンドを実行するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。