import tkinter as tk
#功能
#加
def append_num(i):
lists.append(i)
result_num.set(''.join(lists))
#选择运算符
def operator(i):
if len(lists)>0:
if lists[-1] in ['+','-','*','/']:
lists[-1]=i
else:
lists.append(i)
result_num.set(''.join(lists))
#清0
def clear():
lists.clear()
result_num.set(0)
#后退
def back():
del lists[-1]
result_num.set(lists)
#计算
def equal():
a=''.join(lists)
end_num=eval(a)
result_num.set(end_num)
lists.clear()
lists.append(str(end_num))
#界面
#示例化一个窗口对象
root = tk.Tk()
#标题
root.title('简易计算器')
#大小,位置
root.geometry("295x280+900+300")
#透明度
root.attributes("-alpha",0.9)
#背景颜色
root['background']="#FFB6C1"
#
lists=[]
result_num=tk.StringVar()
result_num.set(0)
#标签
label1 = tk.Label(root,textvariable=result_num,width=21,height=2,font=("宋体",20),justify='left',background="#ffffff",anchor='se')
#布局
label1.grid(row=0,columnspan=4)
#按钮
button_clear=tk.Button(root,text='C',width=5,font=("宋体",16),relief='flat',background='#C0C0C0',command=lambda:clear())
button_clear.grid(padx=4,row=1,column=0)
button_back=tk.Button(root,text='←',width=5,font=("宋体",16),relief='flat',background='#C0C0C0',command=lambda:back())
button_back.grid(padx=4,row=1,column=1)
button_division=tk.Button(root,text='/',width=5,font=("宋体",16),relief='flat',background='#C0C0C0',command=lambda: operator('/'))
button_division.grid(padx=4,row=1,column=2)
button_multiplication=tk.Button(root,text='x',width=5,font=("宋体",16),relief='flat',background='#C0C0C0',command=lambda: operator('*'))
button_multiplication.grid(padx=4,row=1,column=3)
button_7=tk.Button(root,text='7',width=5,font=("宋体",16),relief='flat',background='#C0C0C0',command=lambda: append_num('7'))
button_7.grid(padx=4,row=2,column=0)
button_8=tk.Button(root,text='8',width=5,font=("宋体",16),relief='flat',background='#C0C0C0',command=lambda: append_num('8'))
button_8.grid(padx=4,row=2,column=1)
button_9=tk.Button(root,text='9',width=5,font=("宋体",16),relief='flat',background='#C0C0C0',command=lambda: append_num('9'))
button_9.grid(padx=4,row=2,column=2)
button_一=tk.Button(root,text='—',width=5,font=("宋体",16),relief='flat',background='#C0C0C0',command=lambda: operator('-'))
button_一.grid(padx=4,row=2,column=3)
button_4=tk.Button(root,text='4',width=5,font=("宋体",16),relief='flat',background='#C0C0C0',command=lambda: append_num('4'))
button_4.grid(padx=4,row=3,column=0)
button_5=tk.Button(root,text='5',width=5,font=("宋体",16),relief='flat',background='#C0C0C0',command=lambda: append_num('5'))
button_5.grid(padx=4,row=3,column=1)
button_6=tk.Button(root,text='6',width=5,font=("宋体",16),relief='flat',background='#C0C0C0',command=lambda: append_num('6'))
button_6.grid(padx=4,row=3,column=2)
button_加=tk.Button(root,text='+',width=5,font=("宋体",16),relief='flat',background='#C0C0C0',command=lambda: append_num('+'))
button_加.grid(padx=4,row=3,column=3)
button_1=tk.Button(root,text='1',width=5,font=("宋体",16),relief='flat',background='#C0C0C0',command=lambda: append_num('1'))
button_1.grid(padx=4,row=4,column=0)
button_2=tk.Button(root,text='2',width=5,font=("宋体",16),relief='flat',background='#C0C0C0',command=lambda: append_num('2'))
button_2.grid(padx=4,row=4,column=1)
button_3=tk.Button(root,text='3',width=5,font=("宋体",16),relief='flat',background='#C0C0C0',command=lambda: append_num('3'))
button_3.grid(padx=4,row=4,column=2)
button_等于=tk.Button(root,text='=',width=5,height=3,font=("宋体",16),relief='flat',background='#C0C0C0',command=lambda: equal())
button_等于.grid(padx=4,row=4,rowspan=5,column=3)
button_0=tk.Button(root,text='0',width=12,font=("宋体",16),relief='flat',background='#C0C0C0',command=lambda: append_num('0'))
button_0.grid(padx=4,pady=4,row=5,column=0,columnspan=2)
button_点=tk.Button(root,text='.',width=5,font=("宋体",16),relief='flat',background='#C0C0C0',command=lambda: append_num('.'))
button_点.grid(padx=4,row=5,column=2)
#消息循环
root.mainloop()
该计算器能利用eval函数实现简单的加减乘除运算
如有不足,请指出。