2

ボタンが押されたときに、Tkinter のボタンのラベルにアクセスしようとしています。これには、押されたターゲット ボタンへの参照を返すことが含まれます。

現在、引数を入力する必要があるため、これはcommandオプションをlambda関数にバインドすることによって行われます。

button['command'] = lambda: fun_to_call(arg)

インスタンスを返す方法はありますか? TKDocs を確認しましたが、カバーしていません。また、ラベルを取得する代わりに、文字列の別のリストを使用してみました。ただし、リストの最後の要素のみを返します (これは、ボタン インスタンスの作成時にラムダ関数が特定の要素をリストにバインドしていないためだと思います。以前、このリストを使用してボタンのリストを生成しました。)

つまり、ボタンにバインドされたイベントベースの関数で、その親 (押されているボタン) を返します。

4

1 に答える 1

3
def add_callback(control, fun):
    def inner():
        return fun(control)
    control['command'] = inner

...

def test_callback(button):
    print "button instance:", button

b = Button(text="click me")
add_callback(b, test_callback)

より宣言的:

def with_callback(control, fun):
    def inner():
        return fun(control)
    control['command'] = inner
    return control

...
b = with_callback(Button(text="click me"), test_callback)
于 2012-06-05T03:55:05.593 に答える