Tôi đang cố gắng tạo các nút trong tkinter trong vòng lặp for. Và với mỗi vòng lặp vượt qua giá trị i đếm như một đối số trong giá trị lệnh. Vì vậy, khi hàm được gọi từ giá trị lệnh, tôi có thể cho biết nút nào đã được nhấn và hành động tương ứng. Vấn đề là, cho phép len là 3, nó sẽ tạo ra 3 nút với tiêu đề "Game 1" thông qua "Game 3" nhưng khi bất kỳ nút nào được nhấn thì giá trị in luôn là 2, lần lặp cuối cùng. Vì vậy, nó xuất hiện các nút đang được thực hiện như là các thực thể riêng biệt, nhưng giá trị i trong các đối số lệnh có vẻ giống nhau. Đây là mã:Tạo các nút tkinter bằng Python cho các đối số lệnh vòng lặp
def createGameURLs(self):
self.button = []
for i in range(3):
self.button.append(Button(self, text='Game '+str(i+1),command=lambda:self.open_this(i)))
self.button[i].grid(column=4, row=i+1, sticky=W)
def open_this(self, myNum):
print(myNum)
Có cách nào để nhận giá trị i hiện tại, theo mỗi lần lặp lại, để gắn với nút cụ thể đó không? Cảm ơn bạn trước.
Một lời cảm ơn lớn đến cả hai bạn LukaD và BrenBarn, tôi đã chiến đấu với điều đó trong vài ngày nay tin hay không. Cả hai cách đều hoạt động hoàn hảo. Tôi đã đi với i = i sửa chữa cho bây giờ, nhưng tôi chắc chắn sẽ đọc lên trên functools. Tôi đánh giá cao cả hai câu trả lời. – Marcel
Nếu giải pháp BrenBarns hoạt động cho bạn thì bạn nên đánh dấu nó là câu trả lời được chấp nhận của bạn. – lukad
có thể trùng lặp của [đối số truyền qua trong lệnh nút python Tkinter] (http://stackoverflow.com/questions/6920302/passing-argument-in-python-tkinter-button-command) –