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

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-31 05:39:08383ブラウズ

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

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