ホームページ >バックエンド開発 >Python チュートリアル >ループ内で複数の Tkinter ボタンを作成するときに Lambda 変数キャプチャの問題を回避するにはどうすればよいですか?

ループ内で複数の Tkinter ボタンを作成するときに Lambda 変数キャプチャの問題を回避するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-15 22:11:12301ブラウズ

How to Avoid Lambda Variable Capture Issues When Creating Multiple Tkinter Buttons in a Loop?

Lambda を使用した Tkinter for ループでのボタン コマンド割り当ての解決

ラムダ関数を使用して for ループ内で複数のボタンを作成する場合、各ボタンに固有のパラメータを設定するのは難しい場合があります。デフォルトでは、ラムダ式は name 変数を参照し、ループの反復ごとに再割り当てされます。これにより、すべてのボタンが最後に割り当てられた値を継承することになります。

この問題を解決するには、ラムダ式でデフォルトのキーワード パラメーターを使用できます。これにより、各ボタンが独自の個別のパラメータを受け取ることが保証されます:

user_button = Tkinter.Button(self.root, text=name,
                             command=lambda name=name: self.a(name))

各ループ反復で name 変数の現在の値をラムダの name キーワード引数にバインドすることで、目的の機能が実現されます。各ボタンは、意図したとおり、独自の一意のパラメーターを使用して a() 関数を実行します。

以上がループ内で複数の Tkinter ボタンを作成するときに Lambda 変数キャプチャの問題を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。