1번---------------------------------------
b= Button(w,text="click",command=e.delete(0,"end"))
2번---------------------------------------
def dele():
e.delete(0,"end")
b= Button(w,text="dd",command=dele())
3번---------------------------------------
def dele():
e.delete(0,"end")
b= Button(w,text="dd",command=dele)
1번,2번,3번 전부다 같은뜻아닌가여?
근데 1번,2번은 작동하지않고 3번만 정상작동합니다.
왜이런걸까요?
함수를 줘야져
앙 고차함수띠
파이썬 lambda에 대해 알아보시길
눈이 침침해서 안보여... 미안행 틀딱이라
버튼이 함수 받아서 지가 처리하나보지
f와 f()의 차이는 아시죠? 만약 아신다면 파이썬은 함수를 다른 함수의 인자로 전달할 수 있다는 것을 아시면 될 것 같네요.
1번은 e.delete(0, "end")의 리턴값을 인자로 넣고, 2번은 e.delete(0, "end")가 내부적으로 수행되는 함수의 리턴값(None이 되겠네요)을 인자로 넣고, 3번은 e.delete(0, "end")가 내부적으로 수행되는 함수 자체를 인자로 넣는 겁니다
Button 클래스는 아마도 특정 조건하에서 특정 이벤트를 실행시키기 위해 그 이벤트를 일으키는 함수를 초기화 메소드의 인자로 받는 것 같네요
미래에 실행시켜야 하니 실행되고 리턴되는 값이 아닌 실행하겠다는 약속이 필요하겠죠