📜  如何在 python 中创建计算器(1)

📅  最后修改于: 2023-12-03 15:08:45.406000             🧑  作者: Mango

如何在 Python 中创建计算器

在本文中,我们将探讨如何使用 Python 编写一个简单的计算器。我们将使用 Python 3 版本和标准库中的 tkinter 模块来实现这个计算器。

步骤
1. 导入 tkinter 模块

首先,我们需要导入 tkinter 模块以创建我们的 GUI 应用程序。在 Python 3 中,我们可以这样导入:

import tkinter as tk
2. 创建主窗口并设置标题

我们需要创建一个主窗口来容纳我们的计算器。我们还可以通过设置标题来更改窗口的名称。以下是一个示例:

app = tk.Tk()
app.title("Calculator")
3. 创建一个输入字段

我们可以使用 tkinter 的 Entry 组件创建一个输入字段,使用户能够在计算器中输入数字和操作符。以下是一个示例:

expr = tk.Entry(app, width=25, font=("Arial", 16))
expr.grid(columnspan=4)
4. 创建按钮

我们可以使用 tkinter 的 Button 组件创建按钮,使用户能够输入数字和进行计算。以下是一些示例代码:

button_1 = tk.Button(app, text="1", font=("Arial", 16), padx=10, pady=10)
button_2 = tk.Button(app, text="2", font=("Arial", 16), padx=10, pady=10)
button_add = tk.Button(app, text="+", font=("Arial", 16), padx=10, pady=10)
5. 排列按钮

我们需要将这些按钮布置在主窗口中以创建计算器。我们可以使用 grid() 函数指定按钮的行和列。以下是一个示例:

button_1.grid(row=1, column=0)
button_2.grid(row=1, column=1)
button_add.grid(row=1, column=2)
6. 添加按钮单击功能

我们需要为每个按钮添加一个单击事件处理程序,以允许用户输入数字和执行计算。我们可以使用 lambda 函数将处理程序添加为按钮的 command 属性。以下是一个示例:

def add_number(number):
    expr.insert(tk.END, str(number))

button_1 = tk.Button(app, text="1", font=("Arial", 16), padx=10, pady=10, command=lambda: add_number(1))
button_2 = tk.Button(app, text="2", font=("Arial", 16), padx=10, pady=10, command=lambda: add_number(2))
button_add = tk.Button(app, text="+", font=("Arial", 16), padx=10, pady=10, command=lambda: add_number("+"))
7. 添加计算按钮

最后,我们需要添加一个计算按钮来执行用户输入的计算。我们可以编写一个处理程序来计算表达式,然后将结果添加到输入字段中。以下是一个示例:

def calculate():
    result = eval(expr.get())
    expr.delete(0, tk.END)
    expr.insert(0, str(result))

button_calc = tk.Button(app, text="Calculate", font=("Arial", 16), padx=10, pady=10, command=calculate)
button_calc.grid(row=2, columnspan=4)
完整代码
import tkinter as tk

app = tk.Tk()
app.title("Calculator")

expr = tk.Entry(app, width=25, font=("Arial", 16))
expr.grid(columnspan=4)

def add_number(number):
    expr.insert(tk.END, str(number))

button_1 = tk.Button(app, text="1", font=("Arial", 16), padx=10, pady=10, command=lambda: add_number(1))
button_2 = tk.Button(app, text="2", font=("Arial", 16), padx=10, pady=10, command=lambda: add_number(2))
button_3 = tk.Button(app, text="3", font=("Arial", 16), padx=10, pady=10, command=lambda: add_number(3))
button_4 = tk.Button(app, text="4", font=("Arial", 16), padx=10, pady=10, command=lambda: add_number(4))
button_5 = tk.Button(app, text="5", font=("Arial", 16), padx=10, pady=10, command=lambda: add_number(5))
button_6 = tk.Button(app, text="6", font=("Arial", 16), padx=10, pady=10, command=lambda: add_number(6))
button_7 = tk.Button(app, text="7", font=("Arial", 16), padx=10, pady=10, command=lambda: add_number(7))
button_8 = tk.Button(app, text="8", font=("Arial", 16), padx=10, pady=10, command=lambda: add_number(8))
button_9 = tk.Button(app, text="9", font=("Arial", 16), padx=10, pady=10, command=lambda: add_number(9))
button_0 = tk.Button(app, text="0", font=("Arial", 16), padx=10, pady=10, command=lambda: add_number(0))
button_add = tk.Button(app, text="+", font=("Arial", 16), padx=10, pady=10, command=lambda: add_number("+"))
button_sub = tk.Button(app, text="-", font=("Arial", 16), padx=10, pady=10, command=lambda: add_number("-"))
button_mult = tk.Button(app, text="*", font=("Arial", 16), padx=10, pady=10, command=lambda: add_number("*"))
button_div = tk.Button(app, text="/", font=("Arial", 16), padx=10, pady=10, command=lambda: add_number("/"))
button_calc = tk.Button(app, text="Calculate", font=("Arial", 16), padx=10, pady=10)

button_1.grid(row=1, column=0)
button_2.grid(row=1, column=1)
button_3.grid(row=1, column=2)
button_add.grid(row=1, column=3)
button_4.grid(row=2, column=0)
button_5.grid(row=2, column=1)
button_6.grid(row=2, column=2)
button_sub.grid(row=2, column=3)
button_7.grid(row=3, column=0)
button_8.grid(row=3, column=1)
button_9.grid(row=3, column=2)
button_mult.grid(row=3, column=3)
button_0.grid(row=4, column=0)
button_div.grid(row=4, column=1)
button_calc.grid(row=4, column=2, columnspan=2)

def calculate():
    result = eval(expr.get())
    expr.delete(0, tk.END)
    expr.insert(0, str(result))

button_calc.config(command=calculate)

app.mainloop()

这是一个非常简单的计算器应用程序,只有基本的加、减、乘、除功能。您可以根据需要添加其他按钮和功能。