用Python制作一个简单的计算器(加减乘除)

简易计算器

写在前面

小编用python实现了一个简单的计算器,一起来看看吧~

需要环境:

  • pycharm

  • python

一、需求分析

1.1 功能分析

使用Python的Tkinter界面设计实现一个简单的计算器,主要功能按钮包括数字键、四则运算符、等于号和清除键,实现了简单的加减乘除运算。

1.2 性能分析

① 系统具有易操作性

在日常使用中,这个计算器应该可以满足大多数用户的需求,即使在旧计算机上也能够流畅运行。

② 系统具有高效性

这个计算器应用程序非常简单,没有太多的计算和数据处理。因此,它的性能应该是相对较好的,无论是在较老的电脑还是在较新的电脑上都能够快速响应和运行。

二、技术原理

这个计算器应用程序是基于Tkinter GUI工具集编写的一个Python应用程序,它使用不同类型的控件和布局管理器来创建图形用户界面并实现计算器的各种功能,通过用方法来处理用户在应用程序上的操作并显示相应的结果。

三、详细设计

3.1 导入tkinter库

① 程序设计

import tkinter as tk

② 程序分析

在程序开头,通过"import tkinter as tk"导入tkinter库,以便使用tkinter库中的控件和方法。

3.2 定义全局变量

① 程序设计

t = ""``color1 = "skyblue"``color2 = "yellow"``color3 = "pink"``color4 = "red"``result = tk.StringVar()

② 程序分析

全局变量t用于表示计算器输入框中的内容。全局变量result是一个StringVar对象,用于实时更新输入框中的内容,全局变量color1-4分别代表不同的颜色。

3.3 定义添加函数

① 程序设计

def Add(num):`    `global t`    `t = t + str(num)`    `result.set(t)

② 程序分析

Add函数用于将数字和运算符添加到输入框中。它获取单击的按钮上的值,将其转换为字符串并附加到全局变量t中,最后更新输入框中的内容result。

3.4 定义结果函数

① 程序设计

def Result():`    `try:`        `global t`        `total = str(eval(t))`        `result.set(total)`        `t = ""`    `except:`        `result.set(" error ")`        `t = ""

② 程序分析

Result函数用于计算表达式并将结果更新到输入框中。它首先尝试使用Python的内置eval函数计算从输入框中获取的表达式。如果计算成功,则将结果转换为字符串并设置为result,最后清空全局变量t。如果出现任何错误,设置result为" error "字符串并清空全局变量t。

3.5 定义清空函数

① 程序设计

def Clear():`    `global t`    `t = ""`    `result.set("")

② 程序分析

Clear函数用于清空输入框。

3.6 创建主窗口并指定其大小和位置

① 程序设计

root = tk.Tk()``root.configure(background="black")``root.title("简易计算器")``sh = root.winfo_screenheight()``sw = root.winfo_screenwidth()``h = 150``w = 295``x = (sw - w) // 2``y = (sh - h) // 2``root.geometry('%dx%d+%d+%d' % (w, h, x, y))

② 程序分析

通过调用tkinter库中的Tk()函数创建主窗口对象,并设置它的标题和背景颜色和大小。然后通过获取屏幕高度和宽度来自适应地计算窗口的大小和位置。最后使用geometry()方法将窗口定位和显示在屏幕上。

3.7 创建输入框

① 程序设计

entrys = tk.Entry(root, textvariable=result, width=22)``entrys.grid(columnspan=4, ipadx=70)

② 程序分析

创建一个tkinter.Entry对象来显示计算器的输入框。并使用grid()方法来将其添加到主窗口上,并设置它的位置和大小。

3.8 创建数字和运算符按钮

① 程序设计

button1 = tk.Button(root, text=' 1 ', bg=color1, command=lambda: Add(1), height=1, width=7)``button1.grid(row=2, column=0)``button2 = tk.Button(root, text=' 2 ', bg=color1, command=lambda: Add(2), height=1, width=7)``button2.grid(row=2, column=1)``button3 = tk.Button(root, text=' 3 ', bg=color1, command=lambda: Add(3), height=1, width=7)``button3.grid(row=2, column=2)``button4 = tk.Button(root, text=' 4 ', bg=color1, command=lambda: Add(4), height=1, width=7)``button4.grid(row=3, column=0)``button5 = tk.Button(root, text=' 5 ', bg=color1, command=lambda: Add(5), height=1, width=7)``button5.grid(row=3, column=1)``button6 = tk.Button(root, text=' 6 ', bg=color1, command=lambda: Add(6), height=1, width=7)``button6.grid(row=3, column=2)``button7 = tk.Button(root, text=' 7 ', bg=color1, command=lambda: Add(7), height=1, width=7)``button7.grid(row=4, column=0)``button8 = tk.Button(root, text=' 8 ', bg=color1, command=lambda: Add(8), height=1, width=7)``button8.grid(row=4, column=1)``button9 = tk.Button(root, text=' 9 ', bg=color1, command=lambda: Add(9), height=1, width=7)``button9.grid(row=4, column=2)``button0 = tk.Button(root, text=' 0 ', bg=color1, command=lambda: Add(0), height=1, width=7)``button0.grid(row=5, column=0)``   ``add = tk.Button(root, text=' + ', bg=color2, command=lambda: Add("+"), height=1, width=7)``add.grid(row=2, column=3)``subtract = tk.Button(root, text=' - ', bg=color2, command=lambda: Add("-"), height=1, width=7)``subtract.grid(row=3, column=3)``multiply = tk.Button(root, text=' * ', bg=color2, command=lambda: Add("*"), height=1, width=7)``multiply.grid(row=4, column=3)``divide = tk.Button(root, text=' / ', bg=color2, command=lambda: Add("/"), height=1, width=7)``divide.grid(row=5, column=3)

② 程序分析

创建10个数字按钮和4个运算符按钮,并用grid()方法将它们添加到主窗口上。每个按钮都分配了相应的数字或符号,并与Add函数相关联以便将它们添加到输入框中。

3.9 创建等于号和清除按钮

① 程序设计

equal = tk.Button(root, text=' = ', bg=color3, command=Result, height=1, width=7)``equal.grid(row=5, column=2)``clear = tk.Button(root, text='Clear', bg=color4, command=Clear, height=1, width=7)``clear.grid(row=5, column=1)

② 程序分析

为等于号和清除按钮创建两个单独的按钮,并将它们添加到主窗口上。为等于号按钮分配Result函数并为清除按钮分配Clear函数。

四、功能实现

😝除了上面分享,我也给大家整理了Python学习籽料。Python+pycharm安装包,如果有需要的话,可以V扫描下方二维码联系领取哦~

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
在这里插入图片描述
因篇幅有限,仅展示部分资料,添加上方即可获取👆

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/36455.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript算法之龟兔赛跑

简介:龟兔赛跑算法,又称弗洛伊德循环检测算法,是一种在链表中非常常用的算法。它基于运动学和直觉的基本定律。本文旨在向您简要介绍该算法,并帮助您了解这个看似神奇的算法。 假设高速公路上有两辆车。其中一辆的速度为 x,另一辆的速度为 2x。它们唯一能相遇的条件是它们…

[MYSQL] MYSQL表的操作

前言 由图可以看出,表是库的一部分,所以有库才能使用表 show databases; 查看已有的库 create database db_name ; 创建库 使用 use bd_name 使用库,之后对标进行增删查改就只会操作这个库里的而不影响其他库 创建表 create table [if not exists] table_name( d…

MySQL周内训参照3、简单查询与多表联合复杂查询

基础查询 1、查询用户信息,仅显示用户的姓名与手机号,用中文显示列名。中文显示姓名列与手机号列 SELECT user_id AS 编号, phone AS 电话 FROM user; 2. 根据订购表进行模糊查询,模糊查询需要可以走索引,需要给出explain语句。…

【区间动态规划】1771. 由子序列构造的最长回文串的长度

本文涉及知识点 动态规划汇总 LeetCode1771. 由子序列构造的最长回文串的长度 给你两个字符串 word1 和 word2 ,请你按下述方法构造一个字符串: 从 word1 中选出某个 非空 子序列 subsequence1 。 从 word2 中选出某个 非空 子序列 subsequence2 。 连…

企业AI落地的大法器-用数据清洗手段提升数据质量,找回遗珠之光

开篇 书接上文,在上文《谈LORA微调与数据质量处理之争》中我们详细叙述了:LORA微调手段和数据清洗之分,以及如何平衡和组合使用LORA微调与数据清洗的手法。 文末我们提到了“下一篇我们讲着重讲述:在打造企业数据清洗工具、平台…

003 SpringBoot操作ElasticSearch7.x

文章目录 5.SpringBoot集成ElasticSearch7.x1.添加依赖2.yml配置3.创建文档对象4.继承ElasticsearchRepository5.注入ElasticsearchRestTemplate 6.SpringBoot操作ElasticSearch1.ElasticsearchRestTemplate索引操作2.ElasticsearchRepository文档操作3.ElasticsearchRestTempl…

java基于ssm+jsp 弹幕视频网站

1前台首页功能模块 弹幕视频网站,在弹幕视频网站可以查看首页、视频信息、商品信息、论坛信息、我的、跳转到后台、购物车、客服等内容,如图1所示。 图1前台首页界面图 登录,通过登录填写账号、密码等信息进行登录操作,如图2所示…

显卡GTX与RTX有什么区别?哪一个更适合玩游戏?

游戏发烧友们可能对游戏显卡并不陌生,它直接关系到游戏画面的流畅度、细腻程度和真实感。在众多显卡品牌中,英伟达的GTX和RTX系列显卡因其出色的性能而备受关注。 一、GTX与RTX的区别 架构差异 GTX系列显卡采用的是Pascal架构,这是英伟达在…

探索MySQL核心技术:理解索引和主键的关系

在数据密集型应用中,数据库的性能往往是决定一个应用成败的重要因素之一。其中,MySQL作为一种开源关系型数据库管理系统,以其卓越的性能和丰富的功能被广泛应用。而在MySQL数据库优化的众多技巧中,索引和主键扮演着极其重要的角色…

安霸CVFlow推理开发笔记

一、安霸环境搭建: 1.远程172.20.62.13 2. 打开Virtualbox,所在目录:E:\Program Files\Oracle\VirtualBox 3. 配置好ubuntu18.04环境,Ubuntu密码:amba 4. 安装toolchain,解压Ambarella_Toolchain_CNNGe…

鸿蒙开发HarmonyOS NEXT (二) 熟悉ArkUI

一、构造函数 构造一个商品类Item,然后利用foreach函数循环渲染 class Item {name: stringimage: ResourceStrprice: numberdiscount: numberconstructor(name: string, image: ResourceStr, price: number, discount: number 0) {this.name name;this.image ima…

JAVA进阶学习09

文章目录 一、双列集合Map1.1 双列集合介绍1.2 双列集合Map常见API1.3 Map集合遍历方式1.3.1 通过集合的全部键来遍历集合1.3.2 Map集合遍历方式21.3.3 Map集合遍历方式3 二、Map集合的实现类2.1 HashMap类2.2 LinkedHashMap2.3 TreeMap 三、可变参数四、Collections类五、集合…

恭喜朱雀桥的越南薇妮她牌NFC山竹汁饮料,成为霸王茶姬奶茶主材

朱雀桥NFC山竹汁饮料:荣登霸王茶姬奶茶主材,非遗传承的天然之选 近日,据小编了解到:霸王茶姬欣喜地宣布,成功与朱雀桥达成合作越南薇妮她VINUT牌NFC山竹汁饮料。这款商超产品凭借其卓越的品质与独特的口感&#xff0c…

PostgreSQL安装教程及文件介绍

Ubuntu 安装和配置 PostgreSQL 以 Ubuntu Server 20.04,PostgreSQL 12 版本为例。 1. 安装 使用如下命令,安装指定版本的 PostgreSQL sudo apt install postgresql-12在 Ubuntu 20.04 中安装 PostgreSQL 登录您的 Ubuntu 系统并使用以下 apt 命令更新…

Java web应用性能分析之【prometheus监控指标体系】

Java web应用性能分析之【系统监控工具prometheus】_javaweb服务器性能监控工具-CSDN博客 Java web应用性能分析之【prometheusGrafana监控springboot服务和服务器监控】_grafana 导入 prometheus-CSDN博客 因为篇幅原因,前面没有详细说明Prometheus的监控指标&…

数据结构 —— 哈夫曼树

数据结构 —— 哈夫曼树 哈夫曼树定义构造算法特性应用 哈夫曼编码核心概念工作原理特点 我们今天来看哈夫曼树: 哈夫曼树 哈夫曼树(Huffman Tree),是一种特殊的二叉树,由D.A. Huffman在1952年提出,主要用…

[面试题]计算机网络

[面试题]Java【基础】[面试题]Java【虚拟机】[面试题]Java【并发】[面试题]Java【集合】[面试题]MySQL[面试题]Maven[面试题]Spring Boot[面试题]Spring Cloud[面试题]Spring MVC[面试题]Spring[面试题]MyBatis[面试题]Nginx[面试题]缓存[面试题]Redis[面试题]消息队列[面试题]…

WAIC2024 | 华院计算邀您共赴2024年世界人工智能大会,见证未来科技革新

在智能时代的浪潮汹涌澎湃之际,算法已成为推动社会进步的核心力量。作为中国认知智能技术的领军企业,华院计算在人工智能的广阔天地中,不断探索、创新,致力于将算法的潜力发挥到极致。在过去的时日里,华院计算不断探索…

Java - Execl自定义导入、导出

1.需求:问卷星答 下图框出区域,为用户自定义字段问题及答案 2.采用技术EasyExcel 模板所在位置如下 /*** 导出模板** param response*/ Override public void exportTemplate(HttpServletResponse response) throws IOException {ClassPathResource c…

配置 Cmder 到鼠标右键

win Q 快捷键搜索 cmd,以管理员身份运行 在命令行输入 cmder.exe /REGISTER ALL