>백엔드 개발 >파이썬 튜토리얼 >내 Tkinter 버튼의 명령이 클릭하는 대신 즉시 실행되는 이유는 무엇입니까?

내 Tkinter 버튼의 명령이 클릭하는 대신 즉시 실행되는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-23 11:01:33346검색

Why is my Tkinter button's command executing immediately instead of on click?

Tkinter에서 예기치 않은 버튼 트리거링: 함수 참조 이해

Tkinter에서 버튼을 생성할 때 실행될 명령을 지정할 수 있습니다. 버튼을 클릭했을 때. 그러나 코드 샘플에서는 버튼이 생성되는 즉시 제공된 명령이 실행됩니다.

이런 일이 발생하는 이유를 이해하려면 다음 스니펫을 고려하세요.

b = Button(admin, text='as', command=button('hey'))

이 코드는

result = button('hey')
b = Button(admin, text='as', command=result)

명령 매개변수 내에서 버튼('hey')을 호출하면 함수가 호출되어 즉시 실행됩니다. 결과적으로, 버튼을 실제로 클릭하기 전에 print('hey') 및 print('het') 코드가 인쇄됩니다.

이 문제를 해결하려면 함수에 대한 참조를 전달해야 합니다. 그것을 실행합니다. 이렇게 하려면 괄호를 생략하면 됩니다.

b = Button(admin, text='as', command=button)

이것은 버튼 기능에 대한 참조를 전달하며 버튼이 생성될 때가 아니라 버튼을 클릭할 때 실행됩니다.

또는 람다 함수를 사용하여 원하는 인수로 원래 함수를 호출하는 익명 함수를 만들 수 있습니다.

b = Button(admin, text='as', command=lambda: button('hey'))

위 내용은 내 Tkinter 버튼의 명령이 클릭하는 대신 즉시 실행되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.