ホームページ >バックエンド開発 >Python チュートリアル >ループ内で作成された Tkinter ボタンに一意の引数を渡すにはどうすればよいですか?
tkinter ボタン作成ループでコマンド引数を渡す
Tkinter では、for ループで一連のボタンを作成するときに、ユーザーはよく直面する問題に直面します。各ボタンに異なるコマンド引数を渡す問題。目的は、関数呼び出し中にカウント値 (i) を抽出することで、どのボタンが押されたかを識別することです。
しかし、このアプローチを実装すると、開発者は特有の問題に遭遇します。作成されたボタンの数に関係なく、印刷されるボタンは値は同じままで、ループの最後の反復に対応します。これは、ボタンが独立して作成されている一方で、コマンド引数の i 値が共有されているように見えることを示唆しています。
問題の解決
この困難を克服し、各ボタンの i 値を修正するには、コマンド内で使用されるラムダ関数を変更する必要があります。
command=lambda: self.open_this(i)
元のラムダでは、i は変数は関数定義時にキャプチャされ、ループの外で割り当てられるため、関数が呼び出されるまでにすでに最後のループ値に置き換えられています。
変更されたラムダは、次の導入によってこの問題を解決します。追加の引数 i=i は、関数定義時に現在の i 値を新しい変数に割り当てます。したがって、各ボタン作成では対応する i 値が保持され、適切な動作が保証されます。
以上がループ内で作成された Tkinter ボタンに一意の引数を渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。