Próbuję tworzyć przyciski w tkinteru w pętli for. I przy każdym przejściu pętli i liczę wartość jako argument w wartości polecenia. Kiedy funkcja jest wywoływana z wartości polecenia, mogę stwierdzić, który przycisk został naciśnięty i odpowiednio działać. Problem polega na tym, powiedzmy, że len to 3, utworzy 3 przyciski z tytułami "Gra 1" do "Gry 3", ale gdy któryś z przycisków zostanie naciśnięty, drukowana wartość zawsze wynosi 2, ostatnia iteracja. Tak więc wydaje się, że przyciski są tworzone jako oddzielne elementy, ale wartość i w argumentach polecenia wydaje się być taka sama. Oto kod:Python tkinter tworzące przyciski dla argumentów komendy przechodzenia do pętli
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)
Czy istnieje sposób na uzyskanie aktualnej wartości, przy każdej iteracji, aby trzymać się tego konkretnego przycisku? Z góry dziękuję.
Wielkie dzięki dla was LukaD i BrenBarn, walczę z tym od kilku dni, teraz wierzcie lub nie. Oba sposoby działały idealnie. Poszedłem na razie z i = i fix, ale zdecydowanie przeczytam na funformools. Doceniam obie odpowiedzi. – Marcel
Jeśli rozwiązanie BrenBarns działa dla Ciebie, powinieneś oznaczyć je jako zaakceptowaną odpowiedź. – lukad
możliwy duplikat [podania argumentu w poleceniu przycisku python Tkinter] (http://stackoverflow.com/questions/6920302/passing-argument-in-python-tkinter-button-command) –