猫史档案馆


【Python作品分享】计算器5.0【作品秀】

用户:技术喵的真传子弟技术喵的真传子弟查看:0 回复:0 评论:0 创建时间:2023-02-24T22:25:32


【作品展示】

center_image

 

【作品介绍】

虽然没人支持发布计算器5.0,但闲不住的我还是发布啦!

·本次大更新优化了很多功能

·评论区打出产品建议(我就不信在没有捣乱的情况下还有人反馈BUG)

 

【作品源代码】

import tkinter as tk
import easygui as ea
from PySide2.QtWidgets import *



class Calc(tk.Tk):
    """普通窗体类"""

    def __init__(self):
        """初始化实例"""
        tk.Tk.__init__(self)
        self.title(" ")
        self.memory = 0  # 暂存数值
        self.create()

    def create(self):
        """创建界面"""
        btn_list = ["MC", "MR", "MS", "帮助",
                    "C", "π", "e", "÷",
                    "7", "8", "9", "×",
                    "4", "5", "6", "-",
                    "1", "2", "3", "+",
                    "+/-", "0", ".", "="]
        r = 1
        c = 0
        for b in btn_list:
            self.button = tk.Button(self, text=b, width=11,
                                    command=(lambda x=b: self.click(x)))
            self.button.grid(row=r, column=c, padx=4, pady=6)
            c += 1
            if c > 3:
                c = 0
                r += 1
        self.entry = tk.Entry(self, width=24, borderwidth=3,
                              bg="skyblue", font=("Impact", 21))
        self.entry.grid(row=0, column=0, columnspan=40, padx=7, pady=5)

    def click(self, key):
        """计算按钮"""
        if key == "=":  # 输出结果
            result = eval(self.entry.get())
            self.entry.insert(tk.END, "= " + str(result))
        elif key == "C":  # 清空输入框
            self.entry.delete(0, tk.END)
        elif key == "MS":  # 存入数值
            self.memory = self.entry.get()
            if "=" in self.memory:
                ix = self.memory.find("=")
                self.memory = self.memory[ix + 2:]
            self.title("M=" + self.memory)
        elif key == "MR":  # 取出数值
            if self.memory:
                self.entry.delete(0, tk.END)
                self.entry.insert(tk.END, self.memory)

        elif key == "+/-":  # 正负翻转
            if "=" in self.entry.get():
                self.entry.delete(0, tk.END)
            elif self.entry.get()[0] == "-":
                self.entry.delete(0)
            else:
                self.entry.insert(0, "-")

        elif key == "MC":  # 清除记忆
            self.memory = self.entry.get()
            self.title("")
            self.entry.delete(0, tk.END)

        elif key == "π":  # 3.141592653589793238462喵33832795...圆周率
            if "=" in self.entry.get():
             self.entry.delete(0, tk.END)
            self.entry.insert(tk.END, 3.14)
        elif key == "e":  # 2.7182818284590452353602874713527...指数缩写
            if "=" in self.entry.get():
             self.entry.delete(0, tk.END)
            self.entry.insert(tk.END, 2.72)

        elif key == "帮助":  # 使用引导
            ea.msgbox('MC:清除记忆储存数据', '清除记忆', '好的')
            ea.msgbox('MR:取出记忆存储数据', '调用数据', '好的')
            ea.msgbox('MS:添加记忆存储数据', '存入记忆', '好的')
            ea.msgbox('C:清空计算框', '清除数据', '好的')
            ea.msgbox('π:调用圆周率(取3.14)',
                      '3.141592653589793238462喵33832795...', '好的')
            ea.msgbox('e:调用指数缩写(取2.72)',
                      '2.7182818284590452353602874713527...', '好的')
            if ea.ynbox('对于“π”与“e”的用法,有些人可能不了解,如果需要,可以查看用法简介', '新手引导', ('查看', '忽略')):
                ea.msgbox('π代表圆周率,是同一个圆中周长与直径的比,是个无限不循环小数,但是我们在生活中计算时,取3.14','圆周率','好的')
                ea.msgbox('e代表指数缩写,跟圆周率一样,也是个无限不循环小数,所以在生活中,我们也是四舍五入,取两位小数,即2.72','指数缩写','好的')
        elif key == "×":  # 美观乘号
            if "=" in self.entry.get():
             self.entry.delete(0, tk.END)
            self.entry.insert(tk.END, "*")

        elif key == "÷":  # 美观除号
            if "=" in self.entry.get():
             self.entry.delete(0, tk.END)
            self.entry.insert(tk.END, "/")

        else:  # 其他键 
            if "=" in self.entry.get():
             self.entry.delete(0, tk.END)
            self.entry.insert(tk.END, key)



if __name__ == "__main__":
    Calc().mainloop()

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页