#python-3.x #tkinter
#python-3.x #tkinter
Вопрос:
Пытаюсь сохранить название кнопок, на которые нажимают, в списке (orderList). Эти кнопки также были сгенерированы из списка (menuList) циклом FOR . Всякий раз, когда нажимается какая-либо кнопка, она сохраняет только последнее значение.
menuList = ['egg', 'bacon', 'bread']
orderList = []
def makeOrder(arg):
orderList.append(arg)
print (orderList)
for btn in mealList:
ttk.Button(mainframe, text=btn, command=lambda: makeOrder(btn)).grid(column=1, row=5)
Я просто хочу, чтобы каждая кнопка сохраняла свое имя внутри пустого списка (списка заказов)
Ответ №1:
Это связано с поздним связыванием python, о котором вы можете подробнее прочитать здесь . Короче говоря, вы можете решить это, изменив свою lambda
функцию:
from tkinter import ttk
import tkinter as tk
menuList = ['egg', 'bacon', 'bread']
mealList = ["breakfast","lunch","dinner"]
orderList = []
root = tk.Tk()
mainframe = tk.Frame(root)
mainframe.pack()
for num,btn in enumerate(mealList):
ttk.Button(mainframe, text=btn,command=lambda x=btn: orderList.append(x)).grid(column=num, row=5)
tk.Button(mainframe,text="result",command=lambda: print (orderList)).grid(row=6,column=0)
root.mainloop()