2011-08-03 7 views
9

「ButtonA」、「ButtonB」という名前の2つのボタンがあります。 ボタンをクリックすると 'hello、ButtonA'と 'hello、ButtonB'を印刷するようにします。 次のように私のコードは次のとおりです。Tkinterボタンのコールバックコマンドに引数を渡すにはどうしたらいいですか?

def sayHi(name): 
    print 'hello,', name 

root = Tk() 
btna = Button(root, text = 'ButtonA', command = lambda: text) 
btna.pack() 

私はButtonAをクリックすると、エラーがtext not defined、発生します。

私はこのエラーを理解していますが、どのようにボタンAのテキストをラムダに渡すことができますか?

+1

が重複する可能性を見てみましょう(http://stackoverflow.com/questions/6920302/pass-argument-in-python-tkinter-button-command)を使用します。他のユーザーは5時間前に別のユーザーが行った。素晴らしい偶然! –

答えて

20

この作業をする必要があります。詳細は

... 
btnaText='ButtonA' 
btna = Button(root, text = btnaText, command = lambda: sayHi(btnaText)) 
btna.pack() 

を[PythonのTkinterのボタンコマンドに引数を渡す]のTkinter Callbacks

+0

素晴らしい解決策 –

+0

'lambda:self.MyFunction(MyParam)'を使って私の関数を呼び出す必要がありました。 – WhatsThePoint

2

テキストはあなたのケースでは機能しません。

value = 'ButtonA' 
btna = Button(root, text = value, command = lambda: sayHi(value)) 

あなたはそれを得るでしょう。

+0

この回答は、質問のように "hello、"を印刷する方法を示していません。 –

+0

さて、私は質問を完全に読まなかった。前にテキスト値を定義してlamdbaコールバックに送信するだけです。 –

関連する問題