简易的计算器

import tkinter as tk
from tkinter import *
from tkinter import END
def button_click(number):
    current = entry.get()
    entry.delete(0, END)
    entry.insert(0, str(current) + str(number))
def button_clear():
    entry.delete(0, END)
def button_add():
    first_number = entry.get()
    global f_num
    global math
    math = "addition"
    f_num = float(first_number)
    entry.delete(0, END)
def button_equal():
    second_number = entry.get()
    entry.delete(0, END)
    if math == "addition":
        entry.insert(0, f_num + float(second_number))
    elif math == "subtraction":
        entry.insert(0, f_num - float(second_number))
    elif math == "multiplication":
        entry.insert(0, f_num * float(second_number))
    elif math == "division":
        if second_number != '0':
            entry.insert(0, f_num / int(second_number))
        else:
            entry.insert(0, "Error")
def button_subtract():
    first_number = entry.get()
    global f_num
    global math
    math = "subtraction"
    f_num = float(first_number)
    entry.delete(0, END)
def button_multiply():
    first_number = entry.get()
    global f_num
    global math
    math = "multiplication"
    f_num = float(first_number)
    entry.delete(0, END)
def button_divide():
    first_number = entry.get()
    global f_num
    global math
    math = "division"
    f_num = float(first_number)
    entry.delete(0, END)
def button_delete():
    current_value = entry.get()
    if current_value:
        new_value = current_value[:-1]
        entry.delete(0, END)
        entry.insert(0, new_value)
def button_decimal_point():
    current_input = entry.get()
    if '.' not in current_input:
        entry.insert(tk.END, '.')
root = Tk()
root.title("计算器")
entry = tk.Entry(root, width=23, borderwidth=5)
entry.grid(row=0, column=0, columnspan=4, padx=10, pady=10)
Button(root, text="C",command=button_clear).grid(row=1, column=0,ipadx=14,padx=1)
Button(root, text="7",command=lambda: button_click(7)).grid(row=2, column=0,ipadx=15)
Button(root, text="4",command=lambda: button_click(4)).grid(row=3, column=0,ipadx=15)
Button(root, text="1",command=lambda: button_click(1)).grid(row=4, column=0,ipadx=15)
Button(root, text="0",command=lambda: button_click(0)).grid(row=5, column=0,ipadx=15)
Button(root, text="DEL",command=button_delete).grid(row=1, column=1,ipadx=7,padx=1)
Button(root, text="8",command=lambda: button_click(8)).grid(row=2, column=1,ipadx=15)
Button(root, text="5",command=lambda: button_click(5)).grid(row=3, column=1,ipadx=15)
Button(root, text="2",command=lambda: button_click(2)).grid(row=4, column=1,ipadx=15)
Button(root, text=".",command=button_decimal_point).grid(row=5, column=1,ipadx=15)
Button(root, text="BCK",command=button_delete).grid(row=1, column=2,ipadx=6,padx=1)
Button(root, text="9",command=lambda: button_click(9)).grid(row=2, column=2,ipadx=15)
Button(root, text="6",command=lambda: button_click(6)).grid(row=3, column=2,ipadx=15)
Button(root, text="3",command=lambda: button_click(3)).grid(row=4, column=2,ipadx=15)
Button(root, text="=",command=button_equal).grid(row=5, column=2,columnspan=2,ipadx=40)
Button(root, text="/",command=button_divide).grid(row=1, column=3,ipadx=15,padx=0)
Button(root, text="*",command=button_multiply).grid(row=2, column=3,ipadx=15)
Button(root, text="-",command=button_subtract).grid(row=3, column=3,ipadx=15)
Button(root, text="+", command=button_add).grid(row=4, column=3,ipadx=14)
root.mainloop()

对程序的分析:

初始化与界面布局

  • 首先,导入了必要的Tkinter库,并定义了一个名为button_click的函数用于处理数字按钮的点击事件,以及其他几个函数分别处理清空、加减乘除运算、等于、删除单个字符和小数点的插入。
  • 使用Tk类创建了主窗口,并设置了窗口的标题为"计算器"。
  • 创建了一个Entry组件作为计算器的显示屏,用于显示输入和计算结果,通过grid方法进行布局。
  • 定义了一系列按钮,每个按钮都绑定了一个命令,当按钮被点击时,会执行相应的函数。

功能实现

  • 数字输入:通过button_click函数实现,它接收一个数字参数,然后在显示屏上追加这个数字。
  • 运算逻辑:通过button_addbutton_subtractbutton_multiplybutton_divide分别实现加、减、乘、除的逻辑。这些函数会记录第一个操作数,并设定一个全局变量math来标记当前的运算类型。button_equal函数则根据之前设定的运算类型执行对应的计算,并显示结果。
  • 清空与删除button_clear用于清空显示屏上的所有内容;button_delete用于删除最后一个输入的字符。
  • 小数点处理button_decimal_point确保小数点只被添加一次。
  • 界面布局:使用grid布局管理器组织各个按钮,使它们在界面上整齐排列

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值