Как передать в функцию аргументы в виде итерации цикла, tkinter
from tkinter import *
def is_zero(x):
print(x)
if x == 0:
print(0)
root = Tk()
root.geometry('1000x100+500+0')
for i in range(10):
but = Button(text=i, command=lambda: is_zero(i), font='a 25')
but.place(width=100, x=i*100, height=100)
root.mainloop()
Программа выводит всегда число 9. Как сделать так чтобы аргументы кнопки передавались в функцию адекватно и не были одинаковыми?
Ответы (1 шт):
Автор решения: eri
→ Ссылка
Проблема в том что i глобальная. Её можно локализовать например так
from tkinter import *
def is_zero(x):
print(x)
if x == 0:
print(0)
root = Tk()
root.geometry('1000x100+500+0')
def make_btn(i):
but = Button(text=i, command=lambda: is_zero(i), font='a 25')
but.place(width=100, x=i*100, height=100)
for i in range(10):
make_btn(i)
root.mainloop()