1

ラボではファンクターを使用し、代わりに関数クロージャーを使用することになっていました。ファンクターについては、functools からコマンドとしてパーシャルをインポートしました。セットアップは最終的に次のようになりました。

digit = command(self.add_character, text = number)

label.bind('< Button-1 >', digit)

次に、後で開発されたメソッドをラベルにバインドします...ファンクターではなく関数クロージャーを使用して、このようなことを行うにはどうすればよいですか?

4

1 に答える 1

1

匿名関数をバインドするには、ラムダを使用します。

label.bind('< Button-1 >', lambda ev: self.add_character(ev, text=number))

ここでは、通常、ラベルのコールバックはイベント引数で渡されると想定しています。コールバックが渡される引数の数を調整する必要がある場合があります。これは にtkinter基づく GUI であり、イベントのみが渡されます。

number値は閉じられますが、functools.partial()オブジェクトを使用する場合、値numberは引数として callable にバインドされます。

于 2014-11-06T08:26:12.780 に答える