Python 3.x 单击时如何从循环中存储按钮名称?
尝试将单击的按钮的名称存储在列表(orderList)中。这些按钮也是由FOR循环从列表(menuList)生成的。无论何时单击任何按钮,它都只存储最后一个值Python 3.x 单击时如何从循环中存储按钮名称?,python-3.x,tkinter,Python 3.x,Tkinter,尝试将单击的按钮的名称存储在列表(orderList)中。这些按钮也是由FOR循环从列表(menuList)生成的。无论何时单击任何按钮,它都只存储最后一个值 menuList = ['egg', 'bacon', 'bread'] orderList = [] def makeOrder(arg): orderList.append(arg) print (orderList) for btn in mealList: ttk.Button(mainframe, t
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)
我只想让每个按钮在空白列表中存储它的名字(OrrrdList.)/P>< P>这是因为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()
这是由于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()