Lambda를 사용하여 Tkinter For 루프에 버튼 명령 할당
람다 함수를 사용하여 Tkinter for 루프 내에서 버튼을 생성할 때 다음을 피하는 것이 중요합니다. 루프 내에서 동일한 변수를 다시 할당합니다. 이렇게 하면 각 버튼이 고유한 매개변수를 받게 됩니다.
문제:
제공된 코드에서:
def a(self, name): print(name) users = {"Test": "127.0.0.0", "Test2": "128.0.0.0"} row = 1 for name in users: user_button = Tkinter.Button(self.root, text=name, command=lambda: self.a(name)) user_button.grid(row=row, column=0) row += 1
for 루프는 각 반복 중에 다시 할당되는 동일한 이름 변수를 참조합니다. 결과적으로 모든 버튼은 이름에 할당된 마지막 값으로 동일한 기능을 호출하여 잘못된 동작으로 이어집니다.
해결책:
이 문제를 해결하려면 기본 매개변수를 사용하여 name 변수의 현재 값을 람다의 키워드 인수에 바인딩할 수 있습니다.
user_button = Tkinter.Button(self.root, text=name, command=lambda name=name: self.a(name))
기본 키워드 인수에 따라 각 버튼의 람다 함수에는 이름 변수의 고유한 복사본이 있어 버튼을 클릭할 때 올바른 매개변수가 사용되도록 보장합니다.
위 내용은 Lambda 함수를 사용하여 Tkinter For 루프에서 버튼 명령 재할당을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!