tkinter создает кнопки в аргументах команды передачи цикла for

Я пытаюсь создать кнопки в tkinter в цикле for.И с каждым циклом передайте значение i count в качестве аргумента в значении команды. Поэтому, когда функция вызывается из значения команды, я могу сказать, какая кнопка была нажата, и действовать соответственно. Проблема в том, что, скажем, len равно 3, он создаст 3 кнопки с названиями от «Игра 1» до «Игра 3», но при нажатии любой из кнопок напечатанное значение всегда равно 2, последняя итерация. Таким образом, кажется, что кнопки создаются как отдельные объекты, но значение i в аргументах команды кажется одинаковым. Вот код:

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)

Есть ли способ получить текущее значение i на каждой итерации, чтобы придерживаться этой конкретной кнопки?

26
задан martineau 15 August 2018 в 17:01
поделиться