>백엔드 개발 >파이썬 튜토리얼 >내 Tkinter 버튼이 생성 즉시 명령을 실행하는 이유는 무엇입니까?

내 Tkinter 버튼이 생성 즉시 명령을 실행하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-21 03:36:16281검색

Why Does My Tkinter Button Execute Its Command Immediately Upon Creation?

생성 시 버튼 명령 실행

제공된 코드에서 Button 위젯은 해당 명령 옵션을 호출 결과로 설정하여 생성됩니다. 인수를 사용하여 함수를 실행하면 명령이 즉시 실행됩니다. 이 문제를 해결하려면 Tkinter에서 이벤트 처리가 어떻게 작동하는지 이해하는 것이 중요합니다.

Tkinter에서 이벤트 처리는 함수를 이벤트(예: 버튼 클릭)와 연결하여 작동합니다. 이벤트가 발생하면 Tkinter는 관련 함수를 호출합니다. 그러나 제공된 코드에서 명령 옵션에는 함수 자체에 대한 참조가 아닌 함수 버튼('hey')을 호출한 결과가 포함되어 있습니다.

따라서 코드는 기본적으로 다음과 동일합니다.

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

결과적으로 Button 생성과 동시에 명령이 실행되어 'hey', 'het'가 출력되고, 버튼을 클릭하면 명령 이후에는 아무 일도 일어나지 않습니다. 은(는) 이미 실행되었습니다.

이를 수정하려면 명령 옵션에 호출 결과가 아닌 함수에 대한 참조가 포함되어야 합니다. 예:

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

또는 명령에 인수가 필요한 경우 인라인 함수 정의를 허용하는 람다 함수를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

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

이것은 호출 시 버튼('hey')을 호출하여 원하는 기능을 제공하는 익명 함수를 생성합니다.

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

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