首页 > 编程语言 >python实现简单计算器

python实现简单计算器

时间:2024-11-05 13:50:50浏览次数:5  
标签:python self 按钮 显示屏 master tk 简单 display 计算器

需求

使用python的tkinter库实现简单的加减乘除计算器程序,并展示界面

程序效果

代码实现

import tkinter as tk

class Calculator:
    def __init__(self, master):
        self.master = master
        master.title("计算器")

        # 创建显示屏
        self.display = tk.Entry(master, width=20, font=('Arial', 20), justify='right')
        self.display.grid(row=0, column=0, columnspan=4)

        # 定义按钮
        buttons = [
            ('7', 1, 0), ('8', 1, 1), ('9', 1, 2),
            ('4', 2, 0), ('5', 2, 1), ('6', 2, 2),
            ('1', 3, 0), ('2', 3, 1), ('3', 3, 2),
            ('0', 4, 1),
            ('+', 1, 3), ('-', 2, 3), ('*', 3, 3), ('/', 4, 3),
            ('=', 4, 2), ('C', 4, 0), ('<-', 5, 0)
        ]

        for (text, row, col) in buttons:
            button = tk.Button(master, text=text, width=5, height=2, command=lambda t=text: self.on_button_click(t))
            button.grid(row=row, column=col)

    def on_button_click(self, char):
        if char == '=':
            try:
                result = str(eval(self.display.get()))
                self.display.delete(0, tk.END)
                self.display.insert(tk.END, result)
            except Exception as e:
                self.display.delete(0, tk.END)
                self.display.insert(tk.END, 'Error')
        elif char == 'C':
            self.display.delete(0, tk.END)
        elif char == '<-':
            current_text = self.display.get()
            self.display.delete(len(current_text) - 1)
        else:
            self.display.insert(tk.END, char)

if __name__ == "__main__":
    root = tk.Tk()
    calculator = Calculator(root)
    root.mainloop()

代码说明

  • __init__(self, master): 这是 Calculator 类的构造函数,用于初始化计算器的各个组件。
    • self.master = master: 将传入的主窗口对象赋值给 self.master,以便在其他方法中使用。
    • master.title("计算器"): 设置主窗口的标题为“计算器”。
    • self.display = tk.Entry(master, width=20, font=('Arial', 20), justify='right'): 创建一个输入框(显示屏),用于显示用户的输入和计算结果。设置宽度为 20 个字符,字体为 Arial,字号为 20,文本右对齐。
    • self.display.grid(row=0, column=0, columnspan=4): 使用 grid 布局管理器将显示屏放置在第 0 行,从第 0 列开始,跨 4 列。
    • buttons: 定义一个包含按钮信息的列表,每个元素是一个元组,包含按钮的文本、行位置和列位置。
    • for (text, row, col) in buttons: 遍历按钮列表,为每个按钮创建一个 Button 控件,并设置其位置。
    • button = tk.Button(master, text=text, width=5, height=2, command=lambda t=text: self.on_button_click(t)): 创建一个按钮,设置按钮的文本、宽度、高度,并绑定点击事件到 on_button_click 方法。
    • button.grid(row=row, column=col): 使用 grid 布局管理器将按钮放置在指定的位置。
  • on_button_click(self, char): 这个方法用于处理按钮点击事件。
    • if char == '=': 如果点击的是等号按钮,尝试计算显示屏中的表达式。
      • result = str(eval(self.display.get())): 使用 eval 函数计算显示屏中的表达式,并将结果转换为字符串。
      • self.display.delete(0, tk.END): 清空显示屏。
      • self.display.insert(tk.END, result): 将计算结果显示在显示屏上。
    • elif char == 'C': 如果点击的是清除按钮,清空显示屏。
      • self.display.delete(0, tk.END): 清空显示屏。
    • elif char == '<-': 如果点击的是删除按钮,删除显示屏中最后一个字符。
      • current_text = self.display.get(): 获取当前显示屏中的文本。
      • self.display.delete(len(current_text) - 1): 删除最后一个字符。
    • else: 对于其他按钮,将按钮上的字符添加到显示屏中。
      • self.display.insert(tk.END, char): 将字符添加到显示屏的末尾。

标签:python,self,按钮,显示屏,master,tk,简单,display,计算器
From: https://blog.csdn.net/licy__/article/details/143476486

相关文章

  • *Python*滞后回归模型——自回归模型 (AR)
    目录⭐️引言⭐️理论1、基本概念:2、自回归模型的数学表达式:3、模型的构建4、平稳性检验5、模型选择6、模型拟合7、模型诊断8、模型应用9、结语⭐️引言        什么是自回归模型(AR):简要介绍自回归模型的概念及其在时间序列分析中的重要性。⭐️理论   ......
  • Leetcode刷题Python之3222.求出硬币游戏的赢家
    提示:本题难度很低,可以一行代码解决。文章目录一、题目描述二、解题思路二、代码实现代码解释总结一、题目描述给你两个正整数x和y,分别表示价值为75和10的硬币的数目。Alice和Bob正在玩一个游戏。每一轮中,Alice先进行操作,Bob后操作。每次操作中,玩......
  • javaweb基于JSP+Servlet开发简单的图书信息管理系统源码(登录增删改查)+报告 课程设计
    ......
  • javaweb基于JSP+Servlet开发简单的人事管理系统源码(增删改查 登录注册) 课程设计 大
    ......
  • Python学习18天
    打印金字塔'''1*1层14个总层数-当前层数***2层33个*****3层52个*******4层71个*********......
  • Python学习的自我理解和想法(27)
    学的是b站的课程(千锋教育),跟老师写程序,不是自创的代码!今天是学Python的第27天,学的内容是python操作pptx和pdf,但是这节博客只会介绍如何新建pptx和加密pdf。开学了,时间不多,写得不多,见谅。目录1.安装必要的库2.创建PPTX(1).创建幻灯片对象(2).选择母版添加一页(3).获取标题......
  • Python小游戏19——滑雪小游戏
    运行效果 python代码importpygameimportrandom #初始化Pygamepygame.init() #设置屏幕尺寸screen_width=800screen_height=600screen=pygame.display.set_mode((screen_width,screen_height))pygame.display.set_caption("滑雪小游戏") #定义......
  • Python小游戏20——超级玛丽
    首先,你需要确保你的Python环境中安装了pygame库。如果还没有安装,可以使用以下命令进行安装:bashpipinstallpygame运行效果展示  代码展示pythonimportpygameimportsys #初始化pygamepygame.init() #设置屏幕尺寸screen_width=800screen_height=......
  • Python小游戏21——拼图小游戏
     使用了Pygame库来创建图形界面。请确保你已经安装了Pygame库(可以使用pipinstallpygame来安装)。运行结果展示 代码展示pythonimportpygameimportsysimportrandom #初始化Pygamepygame.init() #设置屏幕尺寸screen_width,screen_height=600,600......
  • 基于大数据 Python短视频推荐系统(源码+LW+部署讲解+数据库+ppt)
    !!!!!!!!!选题不知道怎么选不清楚自己适合做哪块内容都可以免费来问我避免后期給自己答辩找麻烦增加难度(部分学校只有一次答辩机会没弄好就延迟毕业了)会持续一直更新下去有问必答一键收藏关注不迷路源码获取:https://pan.baidu.com/s/1aRpOv3f2sdtVYOogQjb8jg?pwd=jf1d提取码:......