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)
我是 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)