python Tkinter 计算器应用程序遇到问题

Facing a problem with python Tkinter calculator application

我是 python 的初学者 我正在尝试使用 Tkinter 创建一个计算器应用程序 所以我使用 for 循环来创建按钮,当我在 for 循环中传递 lambda:onclick(i) 时,所有按钮都只分配给我的可迭代对象的最后一个值 这是我的code.Please帮助我

import tkinter as tk
root=tk.Tk()
root.title('Simple Calculator!')

e=tk.Entry(root,width=35,borderwidth=5)
e.grid(row=0,column=0,columnspan=3,padx=10,pady=10)

def onclick(number):
    curr=e.get()
    e.delete(0,'end')
    e.insert(0,str(curr)+str(number))

def onclick4():
    pass
def onclick3():
    e.delete(0,'end')
l=[]

w=0
for i in range(0,10):

    l.append(tk.Button(root,text=str(i),command=lambda:onclick(i),padx=40,pady=30))
    w=w+1
l.append(tk.Button(root,text='+',command=lambda:onclick('+'),padx=40,pady=30))
l.append(tk.Button(root,text='clrscr',command=onclick3,padx=40,pady=30))

a=0
for k in range(1,5):
    for j in range(0,3):
        l[a].grid(row=k,column=j)
        a+=1

l.append(tk.Button(root,text='=',command=onclick4,padx=100,pady=30))    
l[-1].grid(row=5,column=1)

root.mainloop()

谢谢!!

lambda 函数使用后期绑定,这意味着它将使用 i 的最后一个值。

您可以通过将 i 指定为默认参数来提前绑定:

lambda i=i: onclick(i)