📅  最后修改于: 2023-12-03 14:45:53.530000             🧑  作者: Mango
本文将介绍如何使用 Python 的 Tkinter 模块创建一个简单的 GUI 计算器。这个计算器能够进行基本的数学运算如加、减、乘、除、取余数、开根号,并能够在一个文本框中显示结果。
我们将使用 Tkinter 模块来创建计算器的用户界面。界面包括一个顶层框架、一个顶部框架、一个文本框(用于显示结果)、一个数字键盘和一个操作键盘。
import tkinter as tk
class Calculator:
def __init__(self, master):
self.master = master
self.master.title("动态 GUI 计算器")
self.master.geometry("340x300")
# 创建一个框架
top_frame = tk.Frame(self.master)
top_frame.pack(side=tk.TOP)
# 在框架中添加一个文本框
self.display = tk.Entry(top_frame, font=('Arial', 25), width=15, justify='right')
self.display.pack(side=tk.TOP)
# 创建一个按钮框架
button_frame = tk.Frame(self.master)
button_frame.pack(side=tk.TOP)
# 在按钮框架中添加数字按钮
self.add_button(button_frame, '7')
self.add_button(button_frame, '8')
self.add_button(button_frame, '9')
self.add_button(button_frame, '4')
self.add_button(button_frame, '5')
self.add_button(button_frame, '6')
self.add_button(button_frame, '1')
self.add_button(button_frame, '2')
self.add_button(button_frame, '3')
self.add_button(button_frame, '0')
self.add_button(button_frame, '.')
# 创建一个操作按钮框架
operation_frame = tk.Frame(self.master)
operation_frame.pack(side=tk.TOP)
# 在操作按钮框架中添加操作按钮
self.add_button(operation_frame, '+')
self.add_button(operation_frame, '-')
self.add_button(operation_frame, '*')
self.add_button(operation_frame, '/')
self.add_button(operation_frame, '%')
self.add_button(operation_frame, '√')
self.add_button(operation_frame, 'AC')
self.add_button(operation_frame, '=')
# 辅助函数 - 构造 button
def add_button(self, parent, label):
tk.Button(parent, text=label, font=('Arial', 20), width=5, height=2,
command=lambda: self.button_click(label)).pack(side=tk.LEFT, padx=5, pady=5)
# 当按钮被点击时要执行的函数
def button_click(self, label):
if label == 'AC':
self.display.delete(0, tk.END)
elif label == '=':
try:
result = eval(self.display.get())
self.display.delete(0, tk.END)
self.display.insert(tk.END, result)
except:
self.display.delete(0, tk.END)
self.display.insert(tk.END, "错误")
elif label == '√':
try:
result = eval('sqrt(' + self.display.get() + ')')
self.display.delete(0, tk.END)
self.display.insert(tk.END, result)
except:
self.display.delete(0, tk.END)
self.display.insert(tk.END, "错误")
else:
self.display.insert(tk.END, label)
计算器的数学运算通过 Python 的 eval() 函数来实现。 eval() 函数用于计算存储在字符串中的表达式,然后返回表达式的值。eval() 函数会执行字符串中的数学运算,并将结果返回。
以下代码演示如何使用 eval() 函数计算表达式 "2+3" :
result = eval("2+3")
print(result) # 输出 5