在本篇博客中,我们将介绍如何使用 Python 的 Tkinter 库来编写一个简单的计算器应用。通过这个项目,你可以学到如何设计 GUI 界面、布局各个组件以及实现事件驱动编程思想。
首先,我们需要明确项目的基本需求:
使用 Tk()
创建主窗口,并设置标题(例如“简单计算器”)。
Entry
控件作为显示区域,显示用户输入的数字和计算结果。Button
控件,并采用网格布局(grid)排列按钮,使得界面简洁美观。核心的交互逻辑主要包括两部分:
eval
函数对输入的表达式求值(注意要捕获异常,防止错误输入导致程序崩溃)。下面是完整的代码示例:
import tkinter as tk
# 定义按钮点击事件处理函数
def on_click(event):
btn_text = event.widget["text"]
if btn_text == "=":
try:
# 使用 eval 对输入的表达式求值
result = eval(entry.get())
entry.delete(0, tk.END)
entry.insert(tk.END, str(result))
except Exception as e:
entry.delete(0, tk.END)
entry.insert(tk.END, "Error")
elif btn_text == "C":
entry.delete(0, tk.END)
else:
entry.insert(tk.END, btn_text)
# 创建主窗口
root = tk.Tk()
root.title("简单计算器")
# 创建输入显示框
entry = tk.Entry(root, font=("Arial", 20), bd=10, relief=tk.RIDGE, justify=tk.RIGHT)
entry.grid(row=0, column=0, columnspan=4, padx=5, pady=5)
# 定义计算器按钮
buttons = [
"7", "8", "9", "/",
"4", "5", "6", "*",
"1", "2", "3", "-",
"0", ".", "=", "+"
]
# 动态生成按钮并布局
row = 1
col = 0
for button in buttons:
btn = tk.Button(root, text=button, font=("Arial", 20), width=5, height=2)
btn.grid(row=row, column=col, padx=5, pady=5)
# 绑定点击事件
btn.bind("", on_click)
col += 1
if col > 3:
col = 0
row += 1
# 单独创建“C”按钮,用于清空输入框
c_button = tk.Button(root, text="C", font=("Arial", 20), width=5, height=2,
command=lambda: entry.delete(0, tk.END))
c_button.grid(row=row, column=0, padx=5, pady=5)
# 进入主事件循环
root.mainloop()
主窗口和显示框
使用 tk.Tk()
创建主窗口,并设置窗口标题;利用 Entry
控件创建显示框,设置字体、边框和对齐方式。
按钮布局
通过一个列表 buttons
定义了计算器按钮的顺序,然后利用循环动态生成按钮并使用 grid
布局。按钮点击事件通过 bind("
绑定到 on_click
函数。
事件处理函数
eval
解析并计算输入框中的字符串表达式。如果计算出错则显示 "Error"。在实现简单计算器的过程中,你可以考虑以下扩展:
eval
时出现安全问题,或自行编写解析器。Frame
、Label
等对界面进行分区与美化。