利用python tkinter 制作的简单计算器

为了巩固tkinter学习中的frame、button和place,利用前面的方法制作了一个简单的计算器,初学,比较冗长繁琐。后续再进行改进。

import tkinter as tk

#清除计算器计算显示部分上所有的数据
def clear():
    entry_left.delete(0,tk.END)
#清楚计算器右侧历史计算数据
def clear_r():
    txt_right.delete(0.0,tk.END)
#退格操作
def delt():
    entry = entry_left.get()  #entry接收整个输入的值,此值为字符串
    entry_left.delete(len(entry)-1)   #len(entry)-1  每次定位到字符串的最后以为序号,从而实现退格

#点击=后的计算过程,利用eval函数实现
def equ():
    entry = entry_left.get()  #entry接收整个输入的值,此值为字符串
    entry_left.insert(tk.END, '=')
    entry_left.insert(tk.END, eval(entry))
    txt_right.insert(tk.END,entry_left.get())
    txt_right.insert(tk.END,'\n')
    clear()

#点击显示
def click_add():
    entry_left.insert(tk.END,"+")
def click_divi():
    entry_left.insert(tk.END,"/")
def click_mult():
    entry_left.insert(tk.END,"*")
def click_sub():
    entry_left.insert(tk.END,"-")
def click_mod():
    entry_left.insert(tk.END,"%")
def click_1():
    entry_left.insert(tk.END,1)
def click_2():
    entry_left.insert(tk.END,2)
def click_3():
    entry_left.insert(tk.END,3)
def click_4():
    entry_left.insert(tk.END,4)
def click_5():
    entry_left.insert(tk.END,5)
def click_6():
    entry_left.insert(tk.END,6)
def click_7():
    entry_left.insert(tk.END,7)
def click_8():
    entry_left.insert(tk.END,8)
def click_9():
    entry_left.insert(tk.END,9)
def click_0():
    entry_left.insert(tk.END,0)
def click_poit():
    entry_left.insert(tk.END,'.')

root = tk.Tk()
root.title("这是一个简单的计算器")
root.geometry("480x240")

# 将整个界面划分为3部分
#将root分成2部分,frame_left表示计算其计算,frame_right部分显示运算的历史
frame_left = tk.Frame(root)
frame_left.place(relx=0,rely=0,relwidth=0.5,relheight=1)

frame_right = tk.Frame(root)
frame_right.place(relx=0.5,rely=0,relwidth=0.5,relheight=1)

# frame_left_top部分呈现计算器的计算部分,frame_left_button部分呈现计算器的主体部分,
frame_left_top = tk.Frame(frame_left,bg='white')
frame_left_top.place(relx=0,rely=0,relwidth=1,relheight=0.3)

frame_left_button = tk.Frame(frame_left,bg='lightblue')
frame_left_button.place(relx=0,rely=0.3,relwidth=1,relheight=0.7)

#frame_left_button部分呈现计算器的主体部分,
# 功能键
btn_clear_l = tk.Button(frame_left_button,text='C',command=clear)
btn_clear_l.place(relx=0,rely=0,relwidth=0.25,relheight=0.2)

btn_mod = tk.Button(frame_left_button,text="%",command=click_mod)
btn_mod.place(relx=0.25,rely=0,relwidth=0.25,relheight=0.2)

btn_delt = tk.Button(frame_left_button,text="<--",command=delt)
btn_delt.place(relx=0.5,rely=0,relwidth=0.25,relheight=0.2)

btn_equ = tk.Button(frame_left_button,text="=",command=equ)
btn_equ.place(relx=0.5,rely=0.8,relwidth=0.5,relheight=0.2)

#四则运算
btn_division = tk.Button(frame_left_button,text="÷",command=click_divi)
btn_division.place(relx=0.75,rely=0,relwidth=0.25,relheight=0.2)

btn_mult = tk.Button(frame_left_button,text="x",command=click_mult)
btn_mult.place(relx=0.75,rely=0.2,relwidth=0.25,relheight=0.2)

btn_add = tk.Button(frame_left_button,text="+",command=click_add)
btn_add.place(relx=0.75,rely=0.4,relwidth=0.25,relheight=0.2)

btn_sub = tk.Button(frame_left_button,text="-",command=click_sub)
btn_sub.place(relx=0.75,rely=0.6,relwidth=0.25,relheight=0.2)

#数字键
btn_7 = tk.Button(frame_left_button,text="7",command=click_7)
btn_7.place(relx=0,rely=0.2,relwidth=0.25,relheight=0.2)

btn_8 = tk.Button(frame_left_button,text="8",command=click_8)
btn_8.place(relx=0.25,rely=0.2,relwidth=0.25,relheight=0.2)

btn_9 = tk.Button(frame_left_button,text="9",command=click_9)
btn_9.place(relx=0.5,rely=0.2,relwidth=0.25,relheight=0.2)

btn_4 = tk.Button(frame_left_button,text="4",command=click_4)
btn_4.place(relx=0,rely=0.4,relwidth=0.25,relheight=0.2)

btn_5 = tk.Button(frame_left_button,text="5",command=click_5)
btn_5.place(relx=0.25,rely=0.4,relwidth=0.25,relheight=0.2)

btn_6 = tk.Button(frame_left_button,text="6",command=click_6)
btn_6.place(relx=0.5,rely=0.4,relwidth=0.25,relheight=0.2)

btn_1 = tk.Button(frame_left_button,text="1",command=click_1)
btn_1.place(relx=0,rely=0.6,relwidth=0.25,relheight=0.2)

btn_2 = tk.Button(frame_left_button,text="2",command=click_2)
btn_2.place(relx=0.25,rely=0.6,relwidth=0.25,relheight=0.2)

btn_3 = tk.Button(frame_left_button,text="3",command=click_3)
btn_3.place(relx=0.5,rely=0.6,relwidth=0.25,relheight=0.2)

btn_0 = tk.Button(frame_left_button,text="0",command=click_0)
btn_0.place(relx=0,rely=0.8,relwidth=0.25,relheight=0.2)

btn_poit = tk.Button(frame_left_button,text=".",command=click_poit)
btn_poit.place(relx=0.25,rely=0.8,relwidth=0.25,relheight=0.2)

#frame_left_top 部分显示当前操作的内容
entry_left = tk.Entry(frame_left_top,bg='lightgray')
entry_left.place(relx=0,rely=0,relwidth=1,relheight=1)

#frame_right部分显示运算的历史
txt_right = tk.Text(frame_right,bg='lightblue')
txt_right.place(relx=0,rely=0,relwidth=1,relheight=1)

btn_clear_r = tk.Button(frame_right,text='清除',bg='gray',command=clear_r)
btn_clear_r.place(relx=0.4,rely=0.85,relwidth=0.2,relheight=0.15)

root.mainloop()

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值