📜  Python|使用 Tkinter 的简单计算器(1)

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

Python 使用 Tkinter 的简单计算器

在本文中,我们将学习如何使用 Python 以及 Tkinter 库创建一个简单的计算器。

前置条件

在继续阅读本文之前,请确保您已经安装好了 Python 3.x 的版本,并且您已经安装了 Tkinter 库。

如果您没有安装 Tkinter 库,请使用以下命令安装:

pip install tkinter
创建一个简单的 GUI

首先,我们需要导入 Tkinter 库,并且创建一个 GUI 窗口。代码片段如下:

import tkinter as tk

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

上述代码创建了一个名为 "简单计算器" 的 GUI 窗口。

接下来,我们将添加一些按钮和一些文本框来创建我们的计算器。

# 显示计算结果的文本框
result_display = tk.Entry(root, width=20, font=("Arial", 16))

# 添加数字按钮
numbers = "7894561230."
for i in range(len(numbers)):
    button = tk.Button(root, text=numbers[i], width=5, height=2, font=("Arial", 16))
    button.grid(row=(i // 3) + 1, column=(i % 3), padx=5, pady=5)

# 添加运算符按钮
operators = "+-*/"
for i in range(len(operators)):
    button = tk.Button(root, text=operators[i], width=5, height=2, font=("Arial", 16))
    button.grid(row=i + 1, column=3, padx=5, pady=5)

# 添加其他按钮
clear_button = tk.Button(root, text="C", width=5, height=2, font=("Arial", 16))
clear_button.grid(row=len(numbers) // 3 + 1, column=0, padx=5, pady=5)

equal_button = tk.Button(root, text="=", width=5, height=2, font=("Arial", 16))
equal_button.grid(row=len(numbers) // 3 + 1, column=1, padx=5, pady=5)

root.mainloop()

上述代码添加了一个文本框用于显示计算结果,并且创建了数字、运算符、清空和等于按钮。我们使用了 grid() 方法将它们放置在我们的 GUI 窗口中。

处理用户输入

现在我们已经创建了所有必要的按钮和文本框,接下来我们需要实现点击这些按钮时触发的功能,以完成计算器的操作。

首先,我们需要为数字和运算符按钮的点击事件添加处理函数。我们将定义一个名为 button_clicked() 的函数并将其绑定到所有数字和运算符按钮。当用户点击按钮时,该函数将从按钮的 text 属性获取被点击的数字或运算符,并将其追加到显示结果的文本框中。代码如下:

def button_clicked(event):
    # 获取被点击的按钮
    button = event.widget
    # 获取按钮的文本
    text = button["text"]
    # 将文本追加到结果文本框中
    result_display.insert(tk.END, text)

# 将 button_clicked 函数绑定到数字和运算符按钮上
for button in (numbers + operators):
    button = root.nametowidget(button)
    button.bind("<Button-1>", button_clicked)

接下来,我们需要为清空按钮和等于按钮添加处理函数。 click_clear() 函数将清空文本框中的内容, click_equal() 函数将计算文本框中的表达式并将结果显示在文本框中。代码如下:

def click_clear():
    # 清空文本框
    result_display.delete(0, tk.END)

def click_equal():
    # 获取文本框中的表达式
    expression = result_display.get()
    try:
        # 计算表达式
        result = eval(expression)
        # 清空文本框
        result_display.delete(0, tk.END)
        # 将结果显示在文本框中
        result_display.insert(tk.END, result)
    except:
        # 如果表达式无效,则清空文本框
        result_display.delete(0, tk.END)

# 将 click_clear 和 click_equal 函数绑定到清除和等于按钮上
clear_button.bind("<Button-1>", lambda event: click_clear())
equal_button.bind("<Button-1>", lambda event: click_equal())
运行计算器

最后,我们需要将所有 GUI 元素放置在我们的窗口中,并运行我们的计算器。代码如下:

# 将 GUI 元素放置到窗口中
result_display.grid(row=0, column=0, columnspan=4, padx=5, pady=5)

# 运行窗口
root.mainloop()

现在您已经完成了一个简单的计算器!运行代码,并在文本框中输入您的数学表达式,然后单击等于按钮即可获得结果。

完整代码

下面是完整的计算器代码,请复制并粘贴到您的 Python 环境中进行测试。

import tkinter as tk

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

# 显示计算结果的文本框
result_display = tk.Entry(root, width=20, font=("Arial", 16))

# 添加数字按钮
numbers = "7894561230."
for i in range(len(numbers)):
    button = tk.Button(root, text=numbers[i], width=5, height=2, font=("Arial", 16))
    button.grid(row=(i // 3) + 1, column=(i % 3), padx=5, pady=5)

# 添加运算符按钮
operators = "+-*/"
for i in range(len(operators)):
    button = tk.Button(root, text=operators[i], width=5, height=2, font=("Arial", 16))
    button.grid(row=i + 1, column=3, padx=5, pady=5)

# 添加其他按钮
clear_button = tk.Button(root, text="C", width=5, height=2, font=("Arial", 16))
clear_button.grid(row=len(numbers) // 3 + 1, column=0, padx=5, pady=5)

equal_button = tk.Button(root, text="=", width=5, height=2, font=("Arial", 16))
equal_button.grid(row=len(numbers) // 3 + 1, column=1, padx=5, pady=5)

# 定义处理函数
def button_clicked(event):
    # 获取被点击的按钮
    button = event.widget
    # 获取按钮的文本
    text = button["text"]
    # 将文本追加到结果文本框中
    result_display.insert(tk.END, text)

def click_clear():
    # 清空文本框
    result_display.delete(0, tk.END)

def click_equal():
    # 获取文本框中的表达式
    expression = result_display.get()
    try:
        # 计算表达式
        result = eval(expression)
        # 清空文本框
        result_display.delete(0, tk.END)
        # 将结果显示在文本框中
        result_display.insert(tk.END, result)
    except:
        # 如果表达式无效,则清空文本框
        result_display.delete(0, tk.END)

# 将处理函数绑定到按钮上
for button in (numbers + operators):
    button = root.nametowidget(button)
    button.bind("<Button-1>", button_clicked)

clear_button.bind("<Button-1>", lambda event: click_clear())
equal_button.bind("<Button-1>", lambda event: click_equal())

# 将 GUI 元素放置到窗口中
result_display.grid(row=0, column=0, columnspan=4, padx=5, pady=5)

# 运行窗口
root.mainloop()
总结

在本文中,我们学习了如何使用 Python 和 Tkinter 库创建一个简单的计算器。我们使用了 Tkinter 的 EntryButtongrid 等组件实现了一个带有数字、运算符和清空按钮的 GUI 界面,并通过添加点击事件处理程序实现了计算器的基本功能。现在您可以在 Python 中设计和创建自己的 GUI 应用程序!