Python tkinter에서 버튼 위젯에 대한 "command" 매개변수는 다음 작업을 수행하는 함수를 지정하기 위한 것입니다. 버튼을 눌렀을 때 실행됩니다. 그러나 초보자들이 흔히 저지르는 오해는 버튼을 선언하는 순간에도 "명령"과 관련된 함수가 실행된다는 관찰입니다.
이 동작을 이해하려면 Python이 함수 매개 변수를 처리하는 방법을 자세히 살펴봐야 합니다. 함수를 매개변수로 전달할 때 두 가지 가능성이 있습니다:
예제 코드에서 제공되면 Hello()가 Button 위젯에 매개변수로 전달됩니다. 즉, 함수가 즉시 실행되고 해당 반환 값이 "command"에 전달됩니다. Hello()는 아무 것도 반환하지 않으므로 None을 반환하고 이는 버튼의 "command" 매개변수에 할당되어 사실상 아무 작업도 수행하지 않습니다.
이 문제를 해결하고 버튼을 클릭할 때만 함수를 실행하려면, 다음과 같이 함수 개체를 전달해야 합니다.
hi = Button(frame, text="Hello", command=Hello)
이렇게 하면 버튼이 버튼을 누르면 Hello() 함수가 호출되어 의도한 코드를 실행합니다.
또한 함수에 인수를 전달해야 하는 경우 설명된 것처럼 람다 식을 사용하여 함수 호출을 래핑할 수 있습니다. 아래:
hi = Button(frame, text="Hello", command=lambda: Goodnight("Moon"))
이 경우 람다 표현식은 버튼 선언 시 Goodnight() 함수가 실행되지 않고 버튼을 클릭하고 명령이 실행될 때까지 기다립니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3