用户:
EUW查看:2 回复:3 评论:2 创建时间:2024-07-16T18:23:37
【作品展示】

【作品介绍】
这是一款计算器但是它是一款带有计算历史功能的计算器
它可以记下你计算的历史
注(它只能记住用户这一次打开程序计算的历史,下一次打开时上一次的计算历史并不会保存起来)
【作品源代码】
import tkinter # 导入库
window = tkinter.Tk() # 创建窗口
window.title("带记忆功能的计算器") # 创建窗口标题
expstr = ""
history_label_obj_list = []
def onClick(key): # 定义函数KEY
global expstr
if key == "=": # 做条件判断
jieguo = round(eval(expstr), 2)
result["text"] = jieguo
frame_right.pack()
t = tkinter.Label(frame_inner, text=expstr + "=" + str(jieguo),
background="seashell")
t.pack()
history_label_obj_list.append(t)
elif key == "AC":
result["text"] = ""
expstr = ""
else:
expstr = expstr + str(key)
result["text"] = expstr
frame_grap = tkinter.Frame(window)
frame_grap.pack(fill="y", side="left")
frame_left = tkinter.Frame(window)
result = tkinter.Label(frame_left, bg="#CCCCCC", fg="white",
text="0", height=2, font=("Arial", 34, "bold"))
result.grid(row=0, column=0, columnspan=4, sticky=tkinter.E)
ac = tkinter.Button(frame_left, bg="#FF0000", fg="#FFEE53", text="AC",
width=6, height=2, command=lambda: onClick("AC"))
ac.grid(row=1, column=0)
# 设置按钮
negative = tkinter.Button(frame_left, bg="#FF0000", fg="#FFEE53", text="+/-", #(#FF0000)是按钮颜色
width=6, height=2, command=lambda: onClick("-")) #(#FFEE53)是按钮中文字颜色
negative.grid(row=1, column=1)
percent = tkinter.Button(frame_left, bg="#FF0000", fg="#FFEE53", text="%",
width=6, height=2, command=lambda: onClick("/100"))
percent.grid(row=1, column=2)
division = tkinter.Button(frame_left, bg="#FF0000", fg="#FFEE53", text="÷",
width=6, height=2, command=lambda: onClick("/"))
division.grid(row=1, column=3)
num7 = tkinter.Button(frame_left, bg="#FF0000", fg="#FFEE53",
text="7", width=6, height=2, command=lambda: onClick(7))
num7.grid(row=2, column=0)
num8 = tkinter.Button(frame_left, bg="#FF0000", fg="#FFEE53", text="8",
width=6, height=2, command=lambda: onClick(8))
num8.grid(row=2, column=1)
num9 = tkinter.Button(frame_left, bg="#FF0000", fg="#FFEE53", text="9",
width=6, height=2, command=lambda: onClick(9))
num9.grid(row=2, column=2)
multi = tkinter.Button(frame_left, bg="#FF0000", fg="#FFEE53", text="x",
width=6, height=2, command=lambda: onClick("*"))
multi.grid(row=2, column=3)
num4 = tkinter.Button(frame_left, bg="#FF0000", fg="#FFEE53", text="4",
width=6, height=2, command=lambda: onClick(4))
num4.grid(row=3, column=0)
num5 = tkinter.Button(frame_left, bg="#FF0000", fg="#FFEE53", text="5",
width=6, height=2, command=lambda: onClick(5))
num5.grid(row=3, column=1)
num6 = tkinter.Button(frame_left, bg="#FF0000", fg="#FFEE53", text="6",
width=6, height=2, command=lambda: onClick(6))
num6.grid(row=3, column=2)
sub = tkinter.Button(frame_left, bg="#FF0000", fg="#FFEE53", text="-",
width=6, height=2, command=lambda: onClick("-"))
sub.grid(row=3, column=3)
num1 = tkinter.Button(frame_left, bg="#FF0000", fg="#FFEE53", text="1",
width=6, height=2, command=lambda: onClick(1))
num1.grid(row=4, column=0)
num2 = tkinter.Button(frame_left, bg="#FF0000", fg="#FFEE53", text="2",
width=6, height=2, command=lambda: onClick(2))
num2.grid(row=4, column=1)
num3 = tkinter.Button(frame_left, bg="#FF0000", fg="#FFEE53", text="3",
width=6, height=2, command=lambda: onClick(3))
num3.grid(row=4, column=2)
add = tkinter.Button(frame_left, bg="#FF0000", fg="#FFEE53", text="+",
width=6, height=2, command=lambda: onClick("+"))
add.grid(row=4, column=3) # 定义按钮
num0 = tkinter.Button(frame_left, bg="#FF0000", fg="#FFEE53", text="0",
width=14, height=2, command=lambda: onClick(0))
num0.grid(row=5, column=0, columnspan=2)
point = tkinter.Button(frame_left, bg="#FF0000", fg="#FFEE53", text=".",
width=6, height=2, command=lambda: onClick("."))
point.grid(row=5, column=2)
equals = tkinter.Button(frame_left, bg="#FF0000", fg="#FFEE53", text="=",
width=6, height=2, command=lambda: onClick("="))
equals.grid(row=5, column=3)
frame_left.pack(fill="y", side="left")
frame_right = tkinter.Frame(window, width=200)
tkinter.Label(frame_right, bg="#5985DE", fg="#46EED0", text="运算历史",
font=("Arial", 14, "underline bold")).pack()
frame_inner = tkinter.Frame(frame_right)
frame_inner.pack(fill="x", side="top")
def clean_history(): # 定义清除历史记录函数
for x in history_label_obj_list:
print(x)
x.destroy()
cls_button = tkinter.Button(
frame_right, bg="grey", fg="#2699FF", text="清空", font=("Arial", 12, "underline bold"), command=lambda: clean_history())
cls_button.pack(fill="x", side="top") # 定义清空按钮
window.mainloop()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn
owugi7s6awa可以将运算记录储存在本地文件里(txt或log)每次读取文件imgsrc="https://static.codemao.cn/emoji/codemao/%E7%BC%96%E7%A8%8B%E7%8C%AB_%E7%82%B9%E8%B5%9E.gif"alt="emotion_编程猫_点赞"
点赞0
评论