ホームページ > バックエンド開発 > Python チュートリアル > ループ内で作成された Tkinter ボタンに一意の引数を渡すにはどうすればよいですか?

ループ内で作成された Tkinter ボタンに一意の引数を渡すにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-31 05:39:08
オリジナル
379 人が閲覧しました

How to Pass Unique Arguments to Tkinter Buttons Created in a Loop?

tkinter ボタン作成ループでコマンド引数を渡す

Tkinter では、for ループで一連のボタンを作成するときに、ユーザーはよく直面する問題に直面します。各ボタンに異なるコマンド引数を渡す問題。目的は、関数呼び出し中にカウント値 (i) を抽出することで、どのボタンが押されたかを識別することです。

しかし、このアプローチを実装すると、開発者は特有の問題に遭遇します。作成されたボタンの数に関係なく、印刷されるボタンは値は同じままで、ループの最後の反復に対応します。これは、ボタンが独立して作成されている一方で、コマンド引数の i 値が共有されているように見えることを示唆しています。

問題の解決

この困難を克服し、各ボタンの i 値を修正するには、コマンド内で使用されるラムダ関数を変更する必要があります。

command=lambda: self.open_this(i)
ログイン後にコピー

元のラムダでは、i は変数は関数定義時にキャプチャされ、ループの外で割り当てられるため、関数が呼び出されるまでにすでに最後のループ値に置き換えられています。

変更されたラムダは、次の導入によってこの問題を解決します。追加の引数 i=i は、関数定義時に現在の i 値を新しい変数に割り当てます。したがって、各ボタン作成では対応する i 値が保持され、適切な動作が保証されます。

以上がループ内で作成された Tkinter ボタンに一意の引数を渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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