2011-08-03 3 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 발생합니다.

이 오류는 이해하지만 ButtonA의 텍스트를 람다에게 전달하는 방법은 무엇입니까?

+1

[파이썬 Tkinter의 버튼 명령에 인수를 전달]의 중복 가능성 (http://stackoverflow.com/questions/6920302에서 살펴/passing-argument-in-python-tkinter-button-command). 다른 하나는 5 시간 전에 다른 사용자에 의해 발생했습니다. 놀라운 우연의 일치! –

답변

20

이 작동합니다 : 자세한 내용은

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

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 콜백으로 보냅니다. –

관련 문제