去年用python写了一个计算器,很普通,今年我对计算器做了改进,加了tk的界面,给你们看看是什么样子。
不说废话,直接上源码。
# 创建一个名为tkinter的别名
import tkinter as tk
# 定义一个函数,用于在文本框中添加数字
def button_click(number):
# 获取当前文本框中的内容
current = entry.get()
# 清空文本框
entry.delete(0, tk.END)
# 在文本框中插入新的内容
entry.insert(tk.END, current + str(number))
# 定义一个函数,用于清空文本框
def button_clear():
# 清空文本框
entry.delete(0, tk.END)
# 定义一个函数,用于计算表达式并在输出框中显示结果
def button_equal():
# 获取文本框中的表达式
expression = entry.get()
try:
# 计算表达式的结果
result = eval(expression)
# 清空输出框
output_text.delete("1.0", tk.END)
# 在输出框中插入结果
output_text.insert(tk.END, "结果: " + str(result))
except Exception as e:
# 清空输出框
output_text.delete("1.0", tk.END)
# 在输出框中插入错误信息
output_text.insert(tk.END, "错误: " + str(e))
# 创建一个名为root的窗口
root = tk.Tk()
root.title("计算器")
# 创建一个名为entry_frame的框架,并将其放置在窗口的第一行
entry_frame = tk.Frame(root)
entry_frame.grid(row=0, column=0, columnspan=5, padx=10, pady=10)
# 创建一个名为output_frame的框架,并将其放置在窗口的第二行
output_frame = tk.Frame(root)
output_frame.grid(row=1, column=0, columnspan=5, padx=10, pady=5)
# 创建一个名为entry的文本框,并将其放置在entry_frame中
entry = tk.Entry(entry_frame, width=35, borderwidth=5)
entry.pack()
# 创建一个名为output_text的文本框,并将其放置在output_frame中
output_text = tk.Text(output_frame, height=1, width=30)
output_text.pack()
# 创建一个包含所有按钮的列表
buttons = [
("7", 1, 2), ("8", 2, 2), ("9", 3, 2), ("/", 4, 2), # 数字键和除号
("4", 1, 3), ("5", 2, 3), ("6", 3, 3), ("*", 4, 3), # 数字键和乘号
("1", 1, 4), ("2", 2, 4), ("3", 3, 4), ("-", 4, 4), # 数字键和减号
("0", 1, 5), ("C", 2, 5), ("=", 3, 5), ("+", 4, 5) # 数字键、清空键和加号
]
# 遍历按钮列表,并创建每个按钮
for button in buttons:
text, column, row = button
if text == "=":
# 创建一个计算结果的按钮
btn = tk.Button(root, text=text, padx=40, pady=20, command=button_equal)
else:
# 创建一个数字按钮
btn = tk.Button(root, text=text, padx=40, pady=20, command=lambda text=text: button_click(text))
# 将按钮放置在窗口中
btn.grid(row=row, column=column, padx=5, pady=5)
# 创建一个名为btn_clear的按钮,并将其放置在窗口的第七行
btn_clear = tk.Button(root, text="Clear", padx=150, pady=20, command=button_clear)
btn_clear.grid(row=6, column=0, columnspan=5, padx=10, pady=5)
# 进入主事件循环
root.mainloop()
注释我写的很详细,宝子们直接复制代码就可以用啦。
下面是实现过程,感兴趣的宝子们可以看一下。
下面是根据上述代码实现计算器功能的具体步骤:
1. 导入`tkinter`模块,它是Python中用于创建GUI应用程序的标准库。
2. 创建`tkinter`的根窗口对象,命名为`root`,并设置窗口标题为"Calculator"。
3. 创建一个用于用户输入的文本框,命名为`entry`,并将其放置在根窗口的第一行。
4. 创建一个用于显示结果的文本框,命名为`output_text`,并将其放置在根窗口的第二行。
5. 定义按钮的回调函数:
- `button_click(number)`:当用户点击数字按钮时,将该数字添加到输入框中。
- `button_clear()`:当用户点击清除按钮时,清空输入框中的内容。
- `button_equal()`:当用户点击等号按钮时,获取输入框中的表达式,使用`eval()`函数计算结果,并将结果显示在输出文本框中。
6. 创建按钮并放置在根窗口中的适当位置:
- 创建一个按钮列表,其中每个按钮具有文本、列和行的信息。
- 遍历按钮列表,创建对应的按钮,并根据按钮类型设置回调函数。
7. 创建一个清除按钮,并放置在根窗口的最后一行。
8. 进入主事件循环 (`root.mainloop()`),监听用户的操作和事件,并响应相应的事件处理函数。
以上是实现计算器功能的基本步骤。通过使用`tkinter`的窗口、文本框和按钮等部件,以及相应的事件处理函数,可以实现用户输入表达式、计算结果并将其显示在界面上的简单计算器功能。
请注意,上述代码只提供了最基本的计算器功能,并未包含复杂的错误处理或其他高级功能。在实际开发中,可能需要进行更多的错误处理和边界情况的检查。