Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python GUI计算器的实现

python GUI计算器的实现

作者头像
用户7886150
修改于 2020-12-28 03:35:13
修改于 2020-12-28 03:35:13
1.4K0
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: Python | 使用Tkinter的简单GUI计算器

01 实现 

我们几乎每个人都用过计算器,大家对于计算器应该都是比较熟悉的,计算器整体也是比较简单的,主要包括:显示器、键盘、运算的逻辑处理等,计算器的图形界面我们使用 tkinter 库实现,下面看一下具体实现过程。 

首先,我们画一个主窗口,代码实现如下: 

1 2 3 4 5 6 7 8 # 创建主窗口 tk = tkinter.Tk() # 设置窗口大小和位置 tk.geometry('300x210+500+200') # 不允许改变窗口大小 tk.resizable(False, False) # 设置窗口标题 tk.title('计算器') 看一下效果: 

我们接着画显示器,代码实现如下: 

1 2 3 4 5 6 7 8 # 自动刷新字符串变量,可用 set 和 get 方法进行传值和取值 contentVar = tkinter.StringVar(tk, '') # 创建单行文本框 contentEntry = tkinter.Entry(tk, textvariable=contentVar) # 设置文本框为只读 contentEntry['state'] = 'readonly' # 设置文本框坐标及宽高 contentEntry.place(x=20, y=10, width=260, height=30) 看一下效果: 

再接着画键盘,代码实现如下: 

1 2 3 4 5 6 7 8 9 10 # 按钮显示内容 bvalue = ['C', '+', '-', '//', '2', '0', '1', '√', '3', '4', '5', '*', '6', '7', '8', '.', '9', '/', '**', '='] index = 0 # 将按钮进行 5x4 放置 for row in range(5):   for col in range(4):     d = bvalue[index]     index += 1     btnDigit = tkinter.Button(tk, text=d, command=lambda x=d: onclick(x))     btnDigit.place(x=20 + col * 70, y=50 + row * 30, width=50, height=20) 看一下效果: 

界面画完了,我们看一下处理运算逻辑的代码,如下所示: 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 # 点击事件 def onclick(btn):   # 运算符   operation = ('+', '-', '*', '/', '**', '//')   # 获取文本框中的内容   content = contentVar.get()   # 如果已有内容是以小数点开头的,在前面加 0   if content.startswith('.'):     content = '0' + content # 字符串可以直接用+来增加字符   # 根据不同的按钮作出不同的反应   if btn in '0123456789':     # 按下 0-9 在 content 中追加     content += btn   elif btn == '.':     # 将 content 从 +-*/ 这些字符的地方分割开来     lastPart = re.split(r'\+|-|\*|/', content)[-1]     if '.' in lastPart:       # 信息提示对话框       tkinter.messagebox.showerror('错误', '重复出现的小数点')       return     else:       content += btn   elif btn == 'C':     # 清除文本框     content = ''   elif btn == '=':     try:       # 对输入的表达式求值       content = str(eval(content))     except:       tkinter.messagebox.showerror('错误', '表达式有误')       return   elif btn in operation:     if content.endswith(operation):       tkinter.messagebox.showerror('错误', '不允许存在连续运算符')       return     content += btn   elif btn == '√':     # 从 . 处分割存入 n,n 是一个列表     n = content.split('.')     # 如果列表中所有的都是数字,就是为了检查表达式是不是正确的     if all(map(lambda x: x.isdigit(), n)):       content = eval(content) ** 0.5     else:       tkinter.messagebox.showerror('错误', '表达式错误')       return   # 将结果显示到文本框中   contentVar.set(content) 整体实现完了之后,我们来演示一下,看一下效果: 

是不是有内味了。 

02 打包 

为了更加方便的使用,我们可以将 Python 代码打包成 exe 文件,打包我们使用 pyinstaller,安装用 pip install pyinstaller 命令即可。 

打包时我们使用 pyinstaller --onefile --nowindowed counter.py 命令即可,此时打包生成的文件是使用的默认图标,如果我们想指定自己的图标可以添加参数 --icon="xxx\xxx.ico",打包生成的文件在 dist 目录。 

如下图所示: 

此时,我们直接运行 exe 文件就行了。 

03 总结 

本文我们使用 Python 实现了一个简易的计算器,大家如果有兴趣的话,可以尝试添加更多的功能以及对键盘进行个性化修改。 

以上就是python GUI计算器的实现的详细内容

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
2种常见软件项目工作量评估方法简述
  本文的目标读者是从事软件行业想快速了解软件开发过程工作量评估的人员。软件工作量评估方法很多,如代码行法、类比法、WBS、故事点、用例点、NESMA、FPA、cosmic、COCOMOⅡ等。本文只是选取主流评估方法进行简述,每一种方法在实际操作过程中有若干条计数规则,在此并未阐述,并不能作为评估工作的实施指南。实际使用方法时,需以各方法发布机构发布的官方文档为准。 
软件造价评估联盟
2019/06/17
7.3K0
2种常见软件项目工作量评估方法简述
快速功能点度量方法估算软件规模基本过程是什么?
  快速功能点度量方法是由北京软件造价评估技术创新联盟依据国际ISO标准提出的一种软件规模度量方法,可采用预估功能点和估算功能点进行软件项目规模的估算和测量。   使用快速功能点度量方法估算软件项目规模的过程可分为6步。 第1步:确定应用类型。   A、    新开发:识别所有新增功能。   B、    增强开发:识别变化功能;包括新增、修改及删除。   C、    已有系统计数:识别最终交付功能。 第2步:识别系统边界。   从用户视角出发,根据软件项目范围来明确系统边界,划分后的内、外部系统一般都可独立运行。通常情况下,产品型研发组织按照产品架构划分居多,项目型研发组织按照项目划分居多。 第3步:识别功能点计数项。   功能点计数项分为数据功能和交易功能2大类,具体包括以下5个:   a)内部逻辑文件(Internal Logical File,ILF,简称内部数据)   软件内部需要维护(如增删改查)的数据。   b)外部接口文件(External Interface File,EIF,简称外部接口)   在其它系统中维护但本软件需要调用的数据。   c)外部输入(External Input,EI)   向软件输入数据或发送指令。   d)外部输出(External Output,EO)   软件向使用者或其它系统输出的数据或发送的指令。   e)外部查询(External Query,EQ)   EQ指使用软件进行的简单查询。   数据功能代表系统提供给用户的满足系统内部和外部数据需求的功能,分为内部逻辑文件(ILF)、外部接口文件(EIF)两类。   交易功能代表提供给用户的处理数据的功能,每一个交易功能都是一个完整的基本过程,一个基本过程应该是业务上的原子操作,并产生基本的业务价值,基本过程必然穿越系统边界,基本过程分为EI、EO和EQ类。   项目早期(如甲方预算)通常采用预估功能点方法,只需要识别ILF/EIF。   在项目中期(如技术方案、立项、项目计划)通常采用估算功能点方法,需要识别ILF/EIF/EI/EO/EQ。   在项目中后期(如需求分析、变更、项目决算)可采用详细功能点方法。 第4步:调整计数项复杂度。   A、    估算功能点方法。   识别5类基本功能组件的功能点数,并根据复杂度决定取值后计算见表5.2。未来可根据组织实际数据进行校正。   B、    数据功能、交易功能的复杂度。   RET(记录元素类型):在一个ILF/EIF内,用户可以识别的数据元素组。一个数据库表或文件对应一个RET。RET取值大致对应逻辑文件的实体个数。   DET(数据元素类型):用户可识别的且不重复的字段。对应于表或文件的字段,取值大致对应逻辑文件的用户可见数据项个数(数据功能),或者用户界面输入输出数据项,取值大致对应基本过程访问用户可见字段数(交易功能)。 第5步:确定GSC因子。   标准功能点方法:14个通用系统特征分别赋值。包括数据通讯、分布式处理、性能、高使用强度的配置、事务频度、在线数据输入、终端用户效率、在线更新、复杂处理、可重用性、易安装性、易操作性、多点运行、易变更。   调整范围在0.65-1.35之间。 第6步:计算调整后的功能点。   计算公式:AFP=UFP*VAF   以上6个步骤便是使用快速功能点度量方法估算软件项目规模的完整过程。
软件成本造价评估
2018/11/08
1.5K0
快速功能点度量方法估算软件规模基本过程是什么?
FPA方法功能点计数常见问题
  本文的目标读者是从事软件行业采用FPA功能点方法对软件研发工作量评估的人员。列举了一些FPA 方法实践过程中的常见问题,有FPA 方法评估标准定义,也有实践过程中得出的方法建议,仅供参考。
软件造价评估联盟
2019/08/26
1.2K0
FPA方法功能点计数常见问题
软件造价评估:快速功能点方法估算软件规模的方法
快速功能点方法是依据国际标准《ISO/IEC 24570-2005软件工程NESMA功能尺度测量法2.1版功能点分析应用的定义和计数指南》提出的一种软件规模度量方法。
Hopestarit
2021/11/17
3K0
软件造价评估:快速功能点方法估算软件规模的方法
软件开发工作量评估:基于FPA功能点分析法的深入解读
功能点分析方法(Function Point Analysis,FPA)是一种可靠、有效的软件规模度量方法,功能点分析方法(FPA)作为一种理解和交流系统规模的手段,针对用户功能、性能的需求进行度量,具有可在项目早期进行度量,不依赖于项目的语言和技术等特点,在可用性和客观性方面都要优于传统的代码行方法(LOC)。
Hopestarit
2021/12/02
8.3K0
软件开发工作量评估:基于FPA功能点分析法的深入解读
软件造价之:浅析快速功能点方法度量软件的规则及过程
快速功能点方法是一种软件规模度量方法。该方法适用于软件项目早期、中期、后期等各个阶段的规模估算或测量。   采用优化后的功能点方法——快速功能点方法进行规模估算或测量的基本过程或步骤如下: 确定计数类型→识别系统边界→识别功能点计数项→计算未调整的功能点数→计算调整后的功能点数。 1、确定计数类型   根据需求或项目的类型确定计数类型。计数类型分为三种:新开发、延续开发及已有系统计数。   对于新开发需求或项目,对预计(或实际)投产的功能进行计数;   对于延续开发需求或项目,对预计(或实际)新增、修改及删除的功能均进行计数;   对于已有系统,对实际的功能进行计数。 2、识别系统边界   在识别系统边界的时候应注意:应从用户视角出发,不受系统实现影响;主要是为了区分内部逻辑文件(ILF)和外部接口文件(EIF);事务功能应穿越识别的系统边界。 3、识别功能点计数项   功能点计数项分为数据功能和交易功能两类。数据功能包括内部逻辑文件(ILF)、外部接口文件(EIF);交易功能包括外部输入(EI)、外部输出(EO)、外部查询(EQ)。   数据功能是系统提供给用户的满足产品内部和外部数据需求的功能,即本系统管理或使用那些业务数据(业务对象),如“客户信息”“账户交易记录”等。   内部逻辑文件或外部接口文件所指的“文件”不是传统数据处理意义上的文件,而是指一组客户可识别的、逻辑上相互关联的数据或者控制信息。因此,这些文件和物理上的数据集合(如数据库表)没有必然的对应关系。   交易功能是系统提供给用户的处理数据的功能,即本系统如何处理和使用那些业务数据(业务对象),如“转账”“修改黑名单生成规则”“查询交易记录”等。   交易功能又称为基本过程,是用户可识别的,业务上的一组原子操作,可能由多个处理逻辑构成。例如,“添加柜员信息”这个基本过程可能包含“信息校验”“修改确认”“修改结果反馈”等一系列处理逻辑。 4、计算未调整的功能点数   a、采用预估功能点进行计数,计算公式如下:          FP=35*ILF+15*EIF   ——FP:未调整的功能点数,单位为功能点;   ——ILF:内部逻辑文件的数量;   ——EIF:外部接口文件的数量。   b、采用估算功能点进行计数,计算公式如下:          FP=10*ILF+7*EIF+4*EI+5*EO+4*EQ   ——FP:未调整的功能点数,单位为功能点;   ——ILF:内部逻辑文件的数量;   ——EIF:外部接口文件的数量;   ——EI:外部输入的数量;   ——EO:外部输出的数量;   ——EQ:外部查询的数量。 5、计算调整后的功能点数   根据不同的规模测算阶段,需要考虑隐含需求及需求变更对规模的影响,因此,需要根据规模计数时机进行规模调整。调整后的功能点数(AFP),计算公式如下:          AFP=FP*CF   ——AFP:调整后的功能点数,单位为功能点;   ——FP:未调整的功能点数,单位为功能点;   ——CF:规模变更调整因子,依据行业数据,项目估算早期(如概预算阶段)通常取值为1.5;项目估算中期(如招投评标、项目立项、技术方案阶段)通常取值为1.26;项目估算中后期(如需求分析完成及后评价)通常取值为1.0。   了解快速功能点方法度量的规则及过程,有助于提高使用快速功能点方法进行软件造价、软件成本估算、软件成本费用测算时的工作效率。
软件成本造价评估
2018/10/22
2.2K0
软件造价之:浅析快速功能点方法度量软件的规则及过程
软件成本估算流程详解及案例分享【国内行业规范-NESMA】
国标/行业标准所描述的功能点估算规范,既有IFPUG ,也有 NESMA,二者在流程和规则上,大部分是相同的,主要差异是:
Hopestarit
2021/11/23
4K0
软件成本估算流程详解及案例分享【国内行业规范-NESMA】
基于功能点分析法(FPA)的度量体系建设简析
  随着信息技术的发展和应用系统规模的增大,无论是系统的建设方还是承建方,都迫切需要建设组织自身的数据度量体系,以便加强项目过程控制、提高生率、降低生产成本,提升市场竞争优势。
软件成本造价评估
2019/01/24
2.2K0
基于功能点分析法(FPA)的度量体系建设简析
进行软件研发成本估算与测量时如何识别基本过程?
  我们在进行软件项目研发成本估算与测量过程中,功能点计数项分为数据功能(逻辑文件)和交易功能(基本过程)两类。那么,什么是基本过程呢? 所谓的基本过程就是用户可以明确感知其业务意义的一次操作,比如对业务数据的增、删、改、查,操作后系统进入相对稳定状态。一个基本过程应该是业务上的原子操作,并产生基本的业务价值,基本过程必然穿越系统边界,基本过程应包含从开始到结束所遇到的所有正常和异常情况。   比如用户要查看某个报表,他可能需要:登陆系统进行身份的有效验证、获取信息X、数据排序、获取报表格式信息、生成报表、调取数据显示等操作。无论本次操作成功与否或用户中途去进行其他操作,而这一系列的步骤其实只是一个基本过程。 基本过程分为EI、EO和EQ类。 EI是处理来自系统边界之外的数据或控制信息的基本处理过程。其主要目的是维护一个或多个ILF或者改变系统的行为。对业务对象的增、删、改;输入信号并改变系统行为的启动服务等操作通常都是EI。 EI的基本识别规则如下:   a)    是来自系统边界之外的输入数据或控制信息;   b)    如果穿过边界的数据不是改变系统行为的控制信息,那么至少应维护一个ILF;   c)    确保该EI没有被重复计数,即任何被分别计数的两个EI至少满足三个条件之一(涉及的ILF或EIF不同、涉及的数据元素不同或处理逻辑不同),否则被视为同一EI; EO是向系统边界之外发送数据或控制信息的基本处理过程,其主要目的是向用户呈现经过处理的信息,而不仅仅是在应用中提取数据或控制信息,对已有数据的统计分析、生成报表通常属于EO。 EO的基本识别规则如下:   a)    将数据或控制信息发送出系统边界;   b)    处理逻辑包含至少一个数学公式或计算过程;或者产生了衍生数据;或者维护了至少一个ILF;或者改变了系统的行为;   c)    确保该EO没有被重复计数,即任何被分别计数的两个EO至少满足三个条件之一(涉及的ILF或EIF不同、涉及的数据元素不同或处理逻辑不同),否则被视为同一EO; EQ是向系统边界之外发送数据或控制信息的基本处理过程,其主要目的是向用户呈现未经加工的已有信息。对业务数据的查询、已有信息的显示通常属于EQ。 EQ的基本识别规则如下:   a)    将数据或控制信息发送出系统边界;   b)    处理逻辑可以包含筛选、分组或排序;   c)    处理逻辑不可以包含数学公式或计算过程,不可以产生派生数据,不可以修改逻辑文件;也不可以改变系统行为,但可以对已有数据进行筛选、分组或排序   d)    确保该EQ没有被重复计数,即任何被分别计数的两个EQ至少满足三个条件之一(涉及的ILF或EIF不同、涉及的数据元素不同或处理逻辑不同),否则被视为同一EQ EI/EO/EQ主要目的区别如下表:
软件成本造价评估
2018/12/04
8190
进行软件研发成本估算与测量时如何识别基本过程?
IFPUG FPA方法使用指导之iTip # 1 –帮助功能!
  为促进大家对IFPUG FPA方法的一致应用,IFPUG组织发布了一系列iTips和uTips来解释IFPUG FPA方法在特定情况下的应用。iTips和uTips不是规则,而是对规则的解释,并使用一些例子来帮助用户理解所涉及的主题。
软件成本造价评估
2019/01/24
1.1K0
IFPUG FPA方法使用指导之iTip # 1 –帮助功能!
什么是快速功能点方法?
软件成本评估中所提到的快速功能点方法是什么? 快速功能点方法是依据国际5大功能点方法ISO标准之一(ISO/IEC 24570-2005软件工程NESMA功能尺度测量法2.1版功能点分析应用的定义和计数指南)要求提出的一种软件规模度量方法,并充分考虑组织及需求或项目特性,目前采用预估功能点和估算功能点进行业务需求模板的估算和测量,并对方法进行了优化改进。 改进之处:在继承了传统功能点方法的计数原则基础上,提出了适合项目不同阶段的三级估算数度的功能点计数原则,组织可以根据项目不同阶段获取的信息量来决定选择适合的估算精度。主要优化及定制内容包括:系统边界的确定、部分功能点计数项规则调整以及不使用GSC(通用系统特征)对功能规模进行进行调整。此外,按照国内行业数据统计分析,快速功能点估算进每个功能组件采用“Average”级复杂度(即ILF/EIF/EI/EO/EQB取值为10/7/4/5/4)。相较NESMA标准中所有的数据功能选择“Low”级别复杂度,事务功能选“Average”复杂度进行估算(即ILF/EIF/EI/EO/EQ取值为7/5/4/5/4)更为准确。在使用快速功能点时,还可以在项目结束后根据详细功能点计数结果,对预估或估算功能点各计数项权重进行校正,以获得更为准确的估算结果。
软件成本造价评估
2018/10/10
2.9K0
什么是快速功能点方法?
软件成本评估中NESMA功能点方法与IFPUG功能点方法有什么区别?——软件造价浅析
软件造价评估方法中,NESMA功能点方法和IFPUG功能点方法高度类似,两种方法的度量结果是等效的。
Hopestarit
2021/11/22
1.6K0
软件成本评估中NESMA功能点方法与IFPUG功能点方法有什么区别?——软件造价浅析
浅析软件成本估算之NESMA方法的3种应用场景
  NESMA为荷兰软件度量协会的简称(Netherland Software Measurement Association),NESMA功能点方法是五种ISO国际功能点标准之一,不但易学易用、快速、经济,而且容易开发和建立用户自己特有的估算模型。
软件成本造价评估
2018/11/19
2K0
浅析软件成本估算之NESMA方法的3种应用场景
软件造价评估:如何估算测试工作量?
作为一个管理者,你是否被询问到某个项目要花多少时间,多少人力测试;或是作为一个普通的测试员,你是否被询问到要花多少时间来完成某个任务或是一次回归测试?我想大多数在软件行业的人或多或少都会碰到这样的关于工作量估计的询问。那么你是怎么回答的呢?你对你自己的回答有信心吗?你是否最终发现实际上花去的时间和原本估计的时间大相径庭呢?
Hopestarit
2021/11/23
1.1K0
软件造价评估:如何估算测试工作量?
软件项目工作量估算之复用程度分析
软件工作量估算是我们在对一个软件项目成本估算过程中,在完成软件规模估算后需要进行的第2项估算工作。在软件项目工作量估算过程中,我们除了要进行风险分析外,还要考虑软件复用的程度。   软件复用就是将已有的软件成分用于构造新的软件系统。在现代的软件开发过程中,为了提高效率和质量,大部分软件企业都已将某些通用功能转化为可重用功能,或者开发组织具备某方面项目的开发经验,遗留下了可以复用的组件,这些情况都可能降低开发所需的工作量。因此,可以被复用的软件成分一般称作可复用构件,无论对可复用构件原封不动地使用还是作适当的修改后再使用,只要是用来构造新软件,则都可称作复用。   软件复用不仅仅是对程序的复用,它还包括对软件生产过程中任何活动所产生的制成品的复用,如项目计划、可行性报告、需求定义、分析模型、设计模型、详细说明、源程序、测试用例等等。如果是在一个系统中多次使用一个相同的软件成分,则不称作复用,而称作共享;对一个软件进行修改,使它运行于新的软硬件平台也不称作复用,而称作软件移值。   我们在软件工作量估算过程中对复用情况的分析原则,可以考虑从系统功能的复用度入手,结合功能点方法,对于每个逻辑文件的复用程度给出明确的定义和系数。可以应用在规模估算之后,在未调整规模的基础上首先进行复用程度的调整。   如下表所示,首先可对复用程度进行分级,并确定不同级别的复用程度与规模估算之间的系数关系。例如,将复用程度分为三级,每个级别对应不同的系数。
软件成本造价评估
2018/12/18
3.7K0
软件项目工作量估算之复用程度分析
度量软件项目成本时如何识别逻辑文件?
 使用快速功能点法进行软件成本度量过程中,在明确了系统边界后,便要进行逻辑文件(数据功能)的识别。那么,什么是逻辑文件?在度量软件成本时如何正确区分哪些是逻辑文件?哪些不是逻辑文件呢?
软件成本造价评估
2018/11/14
1.6K0
度量软件项目成本时如何识别逻辑文件?
软件项目工作量评估方法简述之COSMIC功能点方法
  COSMIC 是通用软件度量国际联盟的简写(Common Software Measurement International Consortium,COSMIC),它成立于1998 年,是一个由全球软件度量专家组成的非盈利自愿性组织,致力于软件规模度量方法的研究与推广。2002 年1月COSMIC 所推出的全功能点规模度量方法成为了 ISO 的标准,最新标准为 ISO/IEC 19761:2011“软件工程—COSMIC—功能规模度量方法”。
软件成本造价评估
2019/06/17
12.8K1
软件项目工作量评估方法简述之COSMIC功能点方法
NESMA方法提供的3种类型的功能点分析方法分别是什么?
NESMA方法提供了3种类型的功能点分析方法:详细(Detailed)功能点分析方法、估算(Estimate)功能点分析方法及预估功能点分析方法。
迅威国信软件造价评估
2021/03/10
2.2K0
功能点分析法(FPA):在软件项目规划阶段的作用与好处(一)
行业经验表明,了解软件规模有助于制定更准确的项目资源和交付日期规划,同时有助于项目跟踪以避免任何不可预见的范围增加。
Hopestarit
2021/12/13
8880
功能点分析法(FPA):在软件项目规划阶段的作用与好处(一)
什么是功能点分析——FPA
传统上,软件开发项目产生的“产品数量”被认为是编写的编程源代码的数量。即代码来源(SLOC 或 KLOC)。在早期的同构软件开发环境中,SLOC 的数量和感知的软件相对大小具有相当直接的关系。
Hopestarit
2021/11/17
1.8K0
什么是功能点分析——FPA
推荐阅读
相关推荐
2种常见软件项目工作量评估方法简述
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档