python实现一个简易的计算器
from tkinter import
from tkinter.ttk import *
def my_frame(master):
w = Frame(master)
w.pack(side=TOP,expand=YES,fill=BOTH)
return w
def my_Button(master,text,command):
w = Button(master,text=text,command=command,width=5)
w.pack(side=LEFT,expand=YES,fill=BOTH,padx=2,pady=2)
return w
def back(text):
if len(text)>0:
return text[:-1]
else:
return text
def calc(text):
try:
return eval(text)
except (SyntaxError,ZeroDivisionError,NameError):
return 'ERROR!'
wind=Tk()
wind.title('简易计算器')
text=StringVar()
Entry(wind,textvariable=text).pack(expand=YES,fill=BOTH,padx=3,pady=4)
style=Style()
style.configure('TButton',padding=3,background="#87CEFA",foreground="#DA70D6")
my1=my_frame(wind)
Label(my_Button(my1,'Backspace',lambda t=text:t.set(back(t.get()))),style="TButton")
Label(my_Button(my1,'Clear',lambda t=text:t.set('')),style="TButton")
Label(my_Button(my1,'Inverse',lambda t=text:t.set('-('+t.get()+')')),style="TButton")
for key in ('789/','456*','123-','0.=+'):
my2=my_frame(wind)
for ch in key:
if ch =='=':
Label(my_Button(my2,ch,lambda t=text:t.set(calc(t.get()))),style="TButton")
else:
Label(my_Button(my2,ch,lambda t=text,c=ch:t.set(t.get()+c)),style="TButton")
wind.mainloop()
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201109140428721.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNTcyMjQ1,size_16,color_FFFFFF,t_70#pic_center)