ホームページ > バックエンド開発 > Python チュートリアル > ループ内で Tkinter ボタン コマンドを割り当てるときに変数スコープの問題を回避するにはどうすればよいですか?

ループ内で Tkinter ボタン コマンドを割り当てるときに変数スコープの問題を回避するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-18 20:34:18
オリジナル
347 人が閲覧しました

How to Avoid Variable Scope Issues When Assigning Tkinter Button Commands in a Loop?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート