简易计算机

计算器是一种较为常用的小工具,简单的计算器有10个数字键、小数点、四则运算符、退格、删除、清零等按钮,还要有显示区以及等号按钮,按键较多,如何排列得既漂亮美观又方便实用,需要仔细进行设计。请布局方法,实现下图所示的计算器界面的布局。

import tkinter as tk

# 创建主窗口
root = tk.Tk()
root.title("简单计算器")

# 添加显示结果的文本框
result_var = tk.StringVar()
result_var.set("0")

result_display = tk.Entry(root, textvariable=result_var, font=("Arial", 20), bd=10, insertwidth=4, width=28,
                          justify="right")
result_display.grid(row=0, column=0, columnspan=4)



def button_click(value):
    current_result = result_var.get()

    if value == "BACK":
        # 如果当前结果不是"0"并且不是空字符串,则删除最后一个字符
        if current_result and current_result != "0":
            result_var.set(current_result[:-1])
    elif value == "CE":
        # 清除整个输入
        result_var.set("0")
    elif value == "DEL":
        # 删除当前输入的全部内容(不清除历史记录)
        result_var.set("")
    else:
        # 其他正常操作
        if current_result == "0":
            result_var.set(value)
        else:
            result_var.set(current_result + value)


def clear():
    result_var.set("0")


def calculate():
    try:
        expression = result_var.get()
        result = eval(expression)
        result_var.set(result)
    except Exception as e:
        result_var.set("错误")

    # 创建按钮


button_texts = [
    ("CE", 1, 0), ("DEL", 1, 1), ("BACK", 1, 2), ("/", 1, 3),
    ("7", 2, 0), ("8", 2, 1), ("9", 2, 2), ("*", 2, 3),
    ("4", 3, 0), ("5", 3, 1), ("6", 3, 2), ("-", 3, 3),
    ("1", 4, 0), ("2", 4, 1), ("3", 4, 2), ("+", 4, 3),
    ("0", 5, 0), (".", 5, 1), ("=", 5, 2)
]


for (text, row, col) in button_texts:
    button = tk.Button(root, text=text, font=("Arial", 20), padx=20, pady=20, width=5,
                       command=lambda t=text: button_click(t))
    button.grid(row=row, column=col)

# 清除按钮(直接使用clear函数)
clear_button = tk.Button(root, text="CE", font=("Arial", 20), padx=20, pady=20, width=5, command=clear)
clear_button.grid(row=1, column=0)

# 等于按钮
equal_button = tk.Button(root, text="=", font=("Arial", 20), padx=20, pady=20, width=5, command=calculate)
equal_button.grid(row=5, column=2)

# 主事件循环
root.mainloop()

这段代码是一个使用Python的Tkinter库编写的简单计算器程序。下面是对每段代码的分析和作用说明:

1. 导入Tkinter库:
   

import tkinter as tk


   这行代码导入了Python的Tkinter模块,该模块用于创建图形用户界面。

2. 创建主窗口:

root = tk.Tk()
root.title("简单计算器")


   这里创建了一个Tkinter窗口实例,并将其标题设置为"简单计算器"。

3. 添加显示结果的文本框:

result_var = tk.StringVar()
result_var.set("0")
result_display = tk.Entry(root, textvariable=result_var, ...)
result_display.grid(row=0, column=0, columnspan=4)


   这段代码创建了一个字符串变量`result_var`用于存储计算结果,并将其初始值设置为"0"。然后创建了一个输入框`result_display`,绑定到`result_var`变量,用于显示计算结果,并将其放置在网格的第一行,横跨四列。

4. 定义按钮点击事件处理函数:

def button_click(value):
    current_result = result_var.get()

    if value == "BACK":
        # 如果当前结果不是"0"并且不是空字符串,则删除最后一个字符
        if current_result and current_result != "0":
            result_var.set(current_result[:-1])
    elif value == "CE":
        # 清除整个输入
        result_var.set("0")
    elif value == "DEL":
        # 删除当前输入的全部内容(不清除历史记录)
        result_var.set("")
    else:
        # 其他正常操作
        if current_result == "0":
            result_var.set(value)
        else:
            result_var.set(current_result + value)


   这个函数定义了当按钮被点击时应该执行的操作。它根据传入的`value`参数来决定是删除字符、清除输入还是添加数字或运算符。

5. 定义清除输入的函数:

def clear():
    result_var.set("0")


   这个函数将结果变量`result_var`的值设置为"0",用于清除当前的输入。

6. 定义计算结果的函数:

def calculate():
    try:
        expression = result_var.get()
        result = eval(expression)
        result_var.set(result)
    except Exception as e:
        result_var.set("错误")


   这个函数尝试计算当前显示在`result_display`中的表达式,并将结果显示在输入框中。如果表达式无效,会显示"错误"。

7. 创建按钮的文本和布局列表:

button_texts = [
    ("CE", 1, 0), ("DEL", 1, 1), ("BACK", 1, 2), ("/", 1, 3),
    ("7", 2, 0), ("8", 2, 1), ("9", 2, 2), ("*", 2, 3),
    ("4", 3, 0), ("5", 3, 1), ("6", 3, 2), ("-", 3, 3),
    ("1", 4, 0), ("2", 4, 1), ("3", 4, 2), ("+", 4, 3),
    ("0", 5, 0), (".", 5, 1), ("=", 5, 2)
]


   这里定义了一个列表,包含了计算器按钮的文本和它们在网格布局中的位置。

8. 循环创建按钮并放置到主窗口:

for (text, row, col) in button_texts:
    button = tk.Button(root, text=text, font=("Arial", 20), padx=20, pady=20, width=5,
                       command=lambda t=text: button_click(t))
    button.grid(row=row, column=col)

   这个循环遍历`button_texts`列表,为每个按钮创建一个Tkinter按钮,并将其放置在指定的网格位置。

9. 创建清除按钮:

clear_button = tk.Button(root, text="CE", font=("Arial", 20), padx=20, pady=20, width=5, command=clear)
clear_button.grid(row=1, column=0)


   这行代码创建了一个清除按钮,并将其放置在网格的第二行第一列。点击这个按钮会调用`clear`函数。

10. 创建等于按钮:

equal_button = tk.Button(root, text="=", font=("Arial", 20), padx=20, pady=20, width=5, command=calculate)
equal_button.grid(row=5, column=2)


    这行代码创建了一个等于按钮,并将其放置在网格的第六行第三列。点击这个按钮会调用`calculate`函数。

11. 主事件循环:

root.mainloop()


    这行代码启动了Tkinter的主事件循环,使得窗口能够响应用户的输入和操作。

整个程序是一个简单的图形界面计算器,用户可以通过点击按钮输入数字和运算符,然后点击等号按钮来计算结果。

不足:由于能力不足,目前还不能将“=”跨两个格子,望大家多多指正
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值