作成時のボタン コマンドの実行
提供されたコードでは、ボタン ウィジェットが、コマンド オプションを呼び出した結果に設定されて作成されます。引数を指定した関数を使用すると、コマンドが即時に実行されます。この問題に対処するには、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 サイトの他の関連記事を参照してください。