from tkinter import*
root=Tk()
root.title('计算器')
x=0
def donothing():
filewin=Toplevel(root)
button=Button(filewin,text='Do nothing')
button.pack()
def keyPress(event):
if event.keysym in ('0','1','2','3','4','5','6','7','8','9'):
label['text']=label['text']+event.keysym
elif event.keysym == 'plus':
label['text']=label['text']+'+'
elif event.keysym == 'minus':
label['text']=label['text']+'-'
elif event.keysym == 'asterisk':
label['text']=label['text']+'*'
elif event.keysym == 'slash':
label['text']=label['text']+'/'
elif event.keysym == 'equal':
try:
label['text']=str(eval(label['text']))
except:
label['text']='Error'
return
elif event.keysym == 'c':
label['text']=""
elif event.keysym == 'BackSpace':
a=str(label['text'])
label['text']=a[:len(str(label['text']))-1]
def btnPress (event):
global label
global x
num=event.widget['text']
if num in '=':
try:
label['text']=str(eval(label['text']))
except:
label['text']='Error'
return
if num=='C':
label['text']=""
return
if num in 'Backspace':
a=str(label['text'])
label['text']=a[:len(str(label['text']))-1]
return
if num in 'sqrt':
import math
label['text']=str(math.sqrt(float(label['text'])))
return
if num in '%':
label['text']=str(float(label['text'])/100)
return
if num == '1/x':
label['text']=str(1/float(label['text']))
return
if x==1:
label['text']='error'
return
s=label['text']
label['text']=s+num
if x==1:
label['text']='error'
return
#菜单
menubar=Menu(root)
filemenu=Menu(menubar)
filemenu.add_command(label='复制(C)',command=donothing)
filemenu.add_command(label='粘贴(P)',command=donothing)
menubar.add_cascade(label='编辑',menu=filemenu)
seemenu=Menu(menubar)
seemenu.add_command(label='标准型(T)',command=donothing)
seemenu.add_command(label='科学型(S)',command=donothing)
seemenu.add_command(label='数字分组(I)',command=donothing)
menubar.add_cascade(label='查看(V)',menu=seemenu)
helpmenu=Menu(menubar)
helpmenu.add_command(label='帮助主题(H)',command=donothing)
helpmenu.add_command(label='关于计算器(A)',command=donothing)
menubar.add_cascade(label='帮助(H)',menu=helpmenu)
root.config(menu=menubar)
#输入框
f0=Frame(root,borderwidth=4)
label=Label(f0,width=62,text='',background='white',anchor='e')
label.pack(side=LEFT)
f0.pack()
#第一行
f1=Frame(root)
btn_back=Button(f1,text=('Backspace'),width=19,fg='red',height=2)
btn_back.grid(column=0,row=0)
btn_back.bind('<Button-1>',btnPress)
btn_CE=Button(f1,text=('CE'),width=20,fg='red',height=2)
btn_CE.grid(row=0,column=1)
btn_CE.bind('<Button-1>',btnPress)
btnclc=Button(f1,text=('C'),width=20,fg='red',height=2)
btnclc.grid(column=2,row=0)
btnclc.bind('<Button-1>',btnPress)
f1.pack()
#第二行
f2=Frame(root)
btn_MC=Button(f2,text=('MC'),width=9,fg='red',height=2)
btn_MC.grid(row=1,column=0)
btn_MC.bind('<Button-1>',btnPress)
btn7=Button(f2,text=('7'),width=9,fg='blue',height=2)
btn7.grid(row=1,column=1)
btn7.bind('<Button-1>',btnPress)
btn8=Button(f2,text=('8'),width=9,fg='blue',height=2)
btn8.grid(row=1,column=2)
btn8.bind('<Button-1>',btnPress)
btn9=Button(f2,text=('9'),width=9,fg='blue',height=2)
btn9.grid(row=1,column=3)
btn9.bind('<Button-1>',btnPress)
btn_remove=Button(f2,text=('/'),width=9,fg='red',height=2)
btn_remove.grid(row=1,column=4)
btn_remove.bind('<Button-1>',btnPress)
btn_sqrt=Button(f2,text=('sqrt'),width=10,fg='blue',height=2)
btn_sqrt.grid(row=1,column=5)
btn_sqrt.bind('<Button-1>',btnPress)
f2.pack()
#第三行
f3=Frame(root)
Button(f3,text=('MR'),width=9,fg='red',height=2).pack(side=LEFT)
btn4=Button(f3,text=('4'),width=9,fg='blue',height=2)
btn4.pack(side=LEFT)
btn4.bind('<Button-1>',btnPress)
btn5=Button(f3,text=('5'),width=9,fg='blue',height=2)
btn5.pack(side=LEFT)
btn5.bind('<Button-1>',btnPress)
btn6=Button(f3,text=('6'),width=9,fg='blue',height=2)
btn6.pack(side=LEFT)
btn6.bind('<Button-1>',btnPress)
btn_purse=Button(f3,text=('*'),width=9,fg='red',height=2)
btn_purse.pack(side=LEFT)
btn_purse.bind('<Button-1>',btnPress)
btn_percent=Button(f3,text=('%'),width=10,fg='blue',height=2)
btn_percent.pack(side=LEFT)
btn_percent.bind('<Button-1>',btnPress)
f3.pack()
#第四行
f4=Frame(root)
Button(f4,text=('MS'),width=9,fg='red',height=2).pack(side=LEFT)
btn1=Button(f4,text=('1'),width=9,fg='blue',height=2)
btn1.pack(side=LEFT)
btn1.bind('<Button-1>',btnPress)
btn2=Button(f4,text=('2'),width=9,fg='blue',height=2)
btn2.pack(side=LEFT)
btn2.bind('<Button-1>',btnPress)
btn3=Button(f4,text=('3'),width=9,fg='blue',height=2)
btn3.pack(side=LEFT)
btn3.bind('<Button-1>',btnPress)
btnsub=Button(f4,text=('-'),width=9,fg='red',height=2)
btnsub.pack(side=LEFT)
btnsub.bind('<Button-1>',btnPress)
btn_rec=Button(f4,text=('1/x'),width=10,fg='blue',height=2)
btn_rec.pack(side=LEFT)
btn_rec.bind('<Button-1>',btnPress)
f4.pack()
#第五行
f5=Frame(root)
Button(f5,text=('M+'),width=9,fg='red',height=2).pack(side=LEFT)
btn0=Button(f5,text=('0'),width=9,fg='blue',height=2)
btn0.pack(side=LEFT)
btn0.bind('<Button-1>',btnPress)
Button(f5,text=('+/-'),width=9,fg='blue',height=2).pack(side=LEFT)
btnpoint=Button(f5,text=('.'),width=9,fg='blue',height=2)
btnpoint.pack(side=LEFT)
btnpoint.bind('<Button-1>',btnPress)
btnsum=Button(f5,text=('+'),width=9,fg='red',height=2)
btnsum.pack(side=LEFT)
btnsum.bind('<Button-1>',btnPress)
button_equal=Button(f5,text=('='),width=10,fg='blue',height=2)
button_equal.pack(side=LEFT)
button_equal.bind('<Button-1>',btnPress)
f5.pack()
root.bind('<KeyPress>',keyPress)
root.mainloop()