计算器(python)

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()

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值