Проблема заключается в вашей lamba в цикле for. Ваша лямбда использует переменную name
, но переменная name
получает переназначение каждый раз через цикл for. Таким образом, в конце все кнопки получают последнее значение, которое name
было назначено в цикле for. Чтобы избежать этого, вы можете использовать параметры ключевого слова по умолчанию в своем выражении lamba следующим образом:
user_button = Tkinter.Button(self.root,
text=name,
command=lambda name=name: self.a(name))
Это привязывает текущее значение переменной name
к аргументу ключевого слова lamba name
каждый раз через цикл , создавая желаемый эффект.