선언 시 버튼 매개변수 "command"가 실행되는 이유는 무엇입니까?
Python에서는 버튼 위젯의 "command" 매개변수가 다음을 담당합니다. 콜백 함수를 정의합니다. 그러나 이 콜백 함수가 버튼을 선언하자마자 즉시 실행되는 것처럼 나타나면 사용자는 당황할 수 있습니다.
이 문제는 "command" 매개변수에 함수 개체 대신 함수 호출 표현식이 할당된 경우에 발생합니다. 예:
def Hello():
print("Hi there!")
Button(frame, text="Hello", command=Hello()) # Function call expression
이 코드에서 "Hello()" 표현식은 Hello 함수를 즉시 호출하여 반환 값을 반환합니다. 결과적으로 버튼이 생성되기 전에 콜백 함수가 실행되어 "안녕하세요!"라는 메시지가 표시됩니다. 메시지가 콘솔에 인쇄됩니다.
이 문제를 방지하고 함수 개체를 "command" 매개변수에 할당하려면 괄호 없이 함수 이름을 사용하십시오.
Button(frame, text="Hello", command=Hello) # Function object
함수 객체는 콜백이 호출될 때 실행될 코드에 대한 참조를 보유합니다. 또한 인수를 전달해야 하는 경우 람다 식을 사용할 수 있습니다.
Button(frame, text="Hello", command=lambda: Goodnight("Moon"))
이 경우 람다 표현식은 Goodnight("Moon") 호출을 래핑하여 버튼을 클릭할 때까지 실행을 지연합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3