项目:使用python做一个简易计算器,图形可视化,既有界面 - Go语言中文社区

项目:使用python做一个简易计算器,图形可视化,既有界面


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码:

import tkinter as tk


class Calc(tk.Frame):  # 创建Calc类继承Frame
    def __init__(self, parent=None):
        """简易图形用户界面计算器构造函数"""
        tk.Frame.__init__(self, parent)
        self.pack()
        self.startOfNextOperand = True  # 开始输入下一个操作数
        # 创建计算过程和结果的标签
        self.expr = tk.StringVar()  # 显示运算表达式
        self.expr.set('')
        self.exprLabel = tk.Label(self, font=('Helvetica', 10),
                                  fg='#666666', width=64, anchor='e', textvariable=self.expr)
        self.exprLabel.grid(row=0, column=0, columnspan=4)
        self.result = tk.StringVar()  # 显示结果
        self.result.set(0)
        self.resultLabel = tk.Label(self, font=('Helvetica', 20), width=34, anchor='e',
                                    textvariable=self.result)
        self.resultLabel.grid(row=1, column=0, columnspan=4)
        # 简易计算器按钮的按钮,使用一个2D列表表示
        buttons = [['CE', 'C', '<-', '/'],
                   ['7', '8', '9', '*'],
                   ['4', '5', '6', '-'],
                   ['1', '2', '3', '+'],
                   ['±', '0', '.', '=']]

        # 然后使用嵌套的循环的方法创建和布局各个按钮
        for r in range(5):
            for c in range(4):
                # 定义事件处理函数cmd(),默认参数为按钮标签buttons[r][c]
                def cmd(key=buttons[r][c]):
                    self.click(key)
                b = tk.Button(self, text=buttons[r][c], width=16, command=cmd)
                b.grid(row=r+2, column=c)  # 前两行用于结果显示,按钮从第3行开始

    def click(self, key):
        """事件处理"""
        if key == '=':   #按等号键时, 求值, 并显示结果
            resultExpr = self.expr.get() + self.result.get()
            resultNum = eval(resultExpr)
            self.result.set(resultNum)
            self.expr.set('')
            self.startOfNextOperand = True
        elif key in '+-/*':
            resultExpr = self.expr.get() + self.result.get() + key
            self.expr.set(resultExpr)
            self.startOfNextOperand = True
        elif key == 'C':  # 全部清空, 回到初始状态
            self.expr.set('')
            self.result.set(0)
        elif key == 'CE':  # 清空当前输入
            self.result.set(0)
        elif key == '<-':
            oldnum = self.result.get()
            if len(oldnum) == 1: # 只有一个字符
                newnum = 0
            else:
                newnum = oldnum[:-1]
            self.result.set(newnum)
        elif key == '±':  # 正负号,切换正负号
            oldnum = self.result.get()  # 获取原来的值
            if oldnum[0] == '-':
                newnum = oldnum[1:]
            else:
                newnum = '-' + oldnum
            self.result.set(newnum)
        else: # 按数字或者小数点键
            if self.startOfNextOperand:
                self.result.set(0)
                self.startOfNextOperand = False
            oldnum = self.result.get()  # 获取原来的值
            if oldnum == '0':
                self.result.set(key)
            else:
                newnum = oldnum + key
                self.result.set(newnum)


if __name__ == '__main__':
    root = tk.Tk()
    root.title('简易计算器')
    calc = Calc(root)
    root.mainloop()

运行结果:
在这里插入图片描述

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_44614751/article/details/103325492
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 18:29:37
  • 阅读 ( 1389 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢