Python简易计算器

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函数实现简单的加减乘除运算
如有不足,请指出。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值