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

news2024/10/6 4:07:47

简易计算器

写在前面

小编用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.coloradmin.cn/o/1869575.html

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

相关文章

fpga bitstream userid

fpga version register # xdc 文件 set_property BITSTREAM.CONFIG.USERID "0xDEADC0DE" [current_design] set_property BITSTREAM.CONFIG.USR_ACCESS 0x66669999 [current_design]ug908 在bit下载之后的property可以看到 ,GUI里面Tools → Edit Devic…

Centos安装redis(附:图形化管理工具)

第一步:下载redis wget http://download.redis.io/releases/redis-6.2.7.tar.gz 第二步:解压 tar zxvf redis-6.2.7.tar.gz 第三步:安装依赖环境 yum -y install gcc-c第四步:安装依赖环境 make install第五步:修…

一种PCB外壳设计方法的尝试

一个异性PCB的板框,外壳,PCB设计: 正常情况下先由机械工程师用CAD设计出板框导出DXF文件,之后基于此DXF文件作为板框进行PCB设计和外壳设计,但对硬件工程师来讲有时候直接在PCB软件上进行简单的板框设计显得更方便&am…

揭秘!这款电路设计工具让学校师生都爱不释手——SmartEDA的魔力何在?

随着科技的飞速发展,电子设计已成为学校师生们不可或缺的技能之一。而在众多的电路设计工具中,有一款名为SmartEDA的工具,凭借其强大的功能和友好的用户体验,迅速赢得了广大师生的青睐。今天,就让我们一起探索SmartEDA…

Linux 交叉编译工具链格式 sqlite3编译示例

1、交叉编译工具链 1.1 定义 交叉编译工具链是一个由编译器、连接器和解释器组成的综合开发工具集,它允许开发者在一个平台上(例如高性能的PC或服务器)编译生成另一个平台(例如嵌入式系统或不同的操作系统和硬件架构&#xff09…

【教程】DPW 325T FPGA板卡程序下载与固化全攻略

到底什么是固化??? 在开发板领域,"固化"通常指的是将软件或操作系统的镜像文件烧录(Flash)到开发板的存储介质上,使其成为开发板启动时加载的系统。这个过程可以确保开发板在启动时能…

2024年8月 PMP认证考试 7月9日正式开始报考

尊敬的各位考生: 经PMI和中国国际人才交流基金会研究决定,中国大陆地区2024年第三期PMI认证考试定于8月31日举办。 7月9日正式开始中文报考,在此之前需要完成英文资料注册,如果您想参加8月考试,还有最后10天报名即截止…

鸿蒙智慧监控解决方案:由Al视觉盒、网络摄像头、管理后台、手机端、NVR等组成

方案架构 整体技术架构由Al视觉盒、网络摄像头、管理后台、手机端、NVR等组成,提供从前端智能监控到后端数据处理的完整闭环。 方案价值 01/节约人力成本 ①AI算法对监控内容进行实时的智能检测,准确率高,有效减少错漏,无需多个…

免费可视化工具为何成为数据分析新宠?

免费可视化工具为何越来越受欢迎?在当今数据驱动的时代,数据分析和展示已成为各行各业不可或缺的核心能力。然而,传统的数据处理和可视化工具往往价格昂贵,且使用门槛较高,这为许多中小企业和个人用户带来了不小的困扰…

java 简单零钱通

目标 面向过程版 代码 package new_pluse;import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner;public class change_common{public static void main(String arg[]){//定义相关变量Scanner scanner new Scanner(System.in);String key&qu…

智能巡检平台建设,减轻一线巡检员负担

智能巡检系统平台的建设,通过技术手段减轻一线巡检员的工作负担,提高巡检工作的效率和质量。以下是该平台建设的几个关键点和效果归纳: 一、自动化规划与分配 智能巡检系统能够自动规划巡检路线、分配巡检任务,从而减少了巡检员在…

@城规人快来抄作业!转GIS开发月薪12000+

从性价比极低的时薪,到相对稳定的月薪过万,我做对了哪些事情? 今天分享的是城乡规划专业的L拿到GIS开发高薪offer的故事。 初识新中地 该同学是城乡规划专业本科,下面称他为L同学。 L同学是今年夏天在网络上了解了GIS开发和新…

小程序发布必须进行软件测试吗?测试内容有哪些?

在如今移动互联网时代,小程序已成为许多企业广泛采用的一种营销手段,然而,发布小程序之前进行充分的软件测试是至关重要的,因为它不仅可以确保小程序的质量,还可以避免潜在的风险和损失。 在进行小程序发布前进行软件…

ELK日志集成

https://www.bilibili.com/video/BV1x94y1674x/?buvidXY705117E90F73A790429C9CFBD5F70F22168&vd_source939ea718db29535a3847d861e5fe37ef

SKYDROID-C12—— 让美景近在眼前

C12是一款小型高清双光吊舱,使用新一代影像芯片,搭配高清无畸变摄像头,有效像素达到500万,拥有强悍的2K视频录制和拍照能力,支持数字变倍,随时随地捕捉清晰的图像,让远处美景近在眼前。

UI(三)布局

文章目录 1、Colum和Row——垂直方向容器和水平方向容器2、ColumnSplit和RowSplit——子组件之间插入一条分割线3、Flex——弹性布局子组件的容器4、Grid和GridItem——网格容器和网格容器单元格5、GridRow和GridCol——栅格容器组件和栅格子组件6、List、ListItem、ListItemGr…

“一站式企业服务平台”全景解析

在当今市场竞争日益激烈、商业环境瞬息万变的大经济环境下,企业在经营过程中常常面临政策不知道摸不清、资源获取困难、融资渠道狭窄、市场开拓不畅、政务办理繁琐等诸多问题,为了解决这些问题,帮扶企业发展,同时优化区域营商环境…

JavaWeb系列三: JavaScript学习 下

文章目录 js数组定义方式数组遍历 js函数函数入门函数使用方式使用方式一使用方式二 函数注意事项函数练习题 定义对象使用object定义使用{}定义 事件onload事件onclick事件失去焦点事件内容发生改变事件表单提交事件静态注册动态注册表单作业 dom对象文档对象模型document对象…

Oracle ACE夜话--和首席-总监一起跟大家谈一谈分布式数据库发展

前言 在昨日的Oracle ACE夜话中,和薛首席、尹总监一起聊了下当前分布式数据库的内容,现将分享内容又进行了相应整理,分享给大家,也希望大家多多指正。 一、自我介绍 尚雷,公众号【尚雷的驿站】,PG ACE&a…

矩阵新玩法,云微客AI矩阵系统开启新营销大门

在激烈的市场竞争中,商家企业们都在追求更加高效的营销方式,在如今流量至上的时代,短视频凭借其魅力,成为了众多企业吸引流量、获客引流的核心营销途径。而想要挤进短视频流量圈的你,是否经常听到矩阵这个词呢&#xf…