고유한 명령 인수를 사용하여 tkinter에서 프로그래밍 방식으로 버튼 만들기
현재 작업은 for 루프를 사용하여 tkinter 인터페이스 내에서 여러 버튼을 생성하는 것입니다. . 각 버튼에는 현재 반복 횟수를 나타내는 고유한 명령 인수가 포함되어야 합니다. 그러나 기존 코드는 일관된 인쇄 값이 있는 버튼을 생성하며 이는 명령 인수 할당에 잠재적인 문제가 있음을 나타냅니다.
문제: 반복 값 사라지기
제공된 코드는 '게임 1'부터 '게임 3'까지의 제목이 있는 버튼입니다. 이러한 버튼 중 하나를 클릭하면 인쇄된 값은 항상 마지막 반복 횟수에 해당하는 2입니다. 이는 명령 인수가 각 개별 버튼과 연결되지 않고 단일 엔터티로 처리된다는 것을 의미합니다.
해결책: 반복 값 보존
핵심 이 문제를 해결하려면 각 버튼에 대한 명령을 정의할 때 현재 반복 값(i)을 유지해야 합니다. 이를 달성하려면 수정된 람다 표현식이 필요합니다.
command=lambda i=i: self.open_this(i)
이 람다 표현식은 i의 현재 값을 i라는 변수에 할당합니다. 이렇게 하면 i 값이 캡처되어 생성 시 특정 버튼에 첨부됩니다. 결과적으로 각 버튼은 고유한 반복 횟수에 액세스할 수 있습니다.
람다 클로저 이해
i=i를 사용하여 클로저는 i의 현재 값을 저장합니다. 함수가 호출될 때의 i 값에 의존하지 않고 람다가 정의될 때. 이렇게 하면 각 버튼에 필요한 정보가 보존됩니다.
고정 코드
앞서 언급한 수정을 통해 수정된 코드는 다음과 같습니다.
def createGameURLs(self): self.button = [] for i in range(3): self.button.append(Button(self, text='Game '+str(i+1), command=lambda i=i: self.open_this(i))) self.button[i].grid(column=4, row=i+1, sticky=W) def open_this(self, myNum): print(myNum)
이제 버튼을 클릭하면 해당 반복 횟수가 정확하게 인쇄되어 초기 문제가 해결됩니다.
위 내용은 Tkinter 버튼 루프의 명령에 고유 인수를 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!