猫史档案馆


【Python作品分享】带记忆功能的计算器【作品秀】

用户:EUWEUW查看:2 回复:3 评论:2 创建时间:2024-07-16T18:23:37


【作品展示】

center_image

 

【作品介绍】

这是一款计算器

但是它是一款带有计算历史功能的计算器

它可以记下你计算的历史

注(它只能记住用户这一次打开程序计算的历史,下一次打开时上一次的计算历史并不会保存起来)

 

【作品源代码】

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


回复

上一页1 页 / 共 1下一页
迷人的刺牙螺uo_t迷人的刺牙螺uo_t

center_image

不错,栓Q

点赞1


评论


科学边界科学边界

建议插入代码window.resizable(False, False)

点赞0


评论


owugi7s6awaowugi7s6awa

可以将运算记录储存在本地文件里(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


评论