ホームページ >バックエンド開発 >Python チュートリアル >ループ内で Tkinter ボタン コマンドを割り当てるときに変数スコープの問題を回避するにはどうすればよいですか?
Lambda を使用した For ループでの Tkinter ボタン コマンドの割り当て
Tkinter の一般的なタスクは、for を使用して一連のボタンを作成することです。ループ。ただし、ラムダ関数を使用してこれらのボタンにコマンドを割り当てる場合、落とし穴が発生します。
この問題は、for ループ反復子でも使用されるラムダ関数内で変数名を使用するときに発生します。この変数はループの進行につれて常に再割り当てされ、すべてのボタンが割り当てられた変数に同じ値を使用するようになります。
これを解決するには、デフォルトのキーワード引数を導入してラムダ式を変更します。これにより、ループを通過するたびに変数の現在値がラムダのキーワード引数にバインドされます。
user_button = Tkinter.Button(self.root, text=name, command=lambda name=name: self.a(name))
変数名を name キーワード引数に割り当てることで、現在の値は反復ごとに引数にバインドされます。これにより、各ボタンをクリックしたときに、その固有のパラメータが確実に保持されます。
以上がループ内で Tkinter ボタン コマンドを割り当てるときに変数スコープの問題を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。