Как определить ряд кнопок и запустить функцию с разными входами для каждой из них. - PullRequest
0 голосов
/ 07 марта 2019

Поэтому я использую цикл for, чтобы определить последовательность кнопок:

buy = [None] * 11
for x in range(11):
    buy[x] = Button(buyf, text = ProjectList[x][2],command= lambda: buycheck(x), bg = "red", fg = "white")

Почему, когда я нажимаю любую из кнопок, они просто возвращают максимальное значение (11)? Я хочу, чтобы каждая из кнопок вызывала функцию buycheck с вводом значения x во время назначения указанной кнопки. Кроме того, кнопки помещаются в предварительно заданный размер массива и затем включаются и выключаются.

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

Это потому, что buycheck(x) всегда будет выполняться с x = 10 (значение после цикла for).Вы должны передать x в качестве значения по умолчанию первого аргумента лямбды, как показано ниже:

command=lambda n=x: buycheck(n)
0 голосов
/ 07 марта 2019

Посмотрите на Динамически генерируйте кнопки Tkinter , в соответствии с тем, что вы сказали (что не совсем ясно), у вас возникли проблемы с использованием динамических кнопок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...