如何用python做计算软件_如何用Python写一个计算器软件 附带效果图

1 import tkinter #导入tkinter模块

2

3 root =tkinter.Tk()4 root.minsize(280,500)5 root.title('李蛟龙的计算器')6

7

8 #1.界面布局

9 #显示面板

10 result =tkinter.StringVar()11 result.set(0) #显示面板显示结果1,用于显示默认数字0

12 result2 = tkinter.StringVar() #显示面板显示结果2,用于显示计算过程

13 result2.set('')14 #显示版

15 label = tkinter.Label(root,font = ('微软雅黑',20),bg = '#EEE9E9',bd ='9',fg = '#828282',anchor = 'se',textvariable =result2)16 label.place(width = 280,height = 170)17 label2 = tkinter.Label(root,font = ('微软雅黑',30),bg = '#EEE9E9',bd ='9',fg = 'black',anchor = 'se',textvariable =result)18 label2.place(y = 170,width = 280,height = 60)19

20

21

22

23 #数字键按钮

24

25 btn7 = tkinter.Button(root,text = '7',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum('7'))26 btn7.place(x = 0,y = 285,width = 70,height = 55)27 btn8 = tkinter.Button(root,text = '8',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum('8'))28 btn8.place(x = 70,y = 285,width = 70,height = 55)29 btn9 = tkinter.Button(root,text = '9',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum('9'))30 btn9.place(x = 140,y = 285,width = 70,height = 55)31

32 btn4 = tkinter.Button(root,text = '4',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum('4'))33 btn4.place(x = 0,y = 340,width = 70,height = 55)34 btn5 = tkinter.Button(root,text = '5',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum('5'))35 btn5.place(x = 70,y = 340,width = 70,height = 55)36 btn6 = tkinter.Button(root,text = '6',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum('6'))37 btn6.place(x = 140,y = 340,width = 70,height = 55)38

39 btn1 = tkinter.Button(root,text = '1',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum('1'))40 btn1.place(x = 0,y = 395,width = 70,height = 55)41 btn2 = tkinter.Button(root,text = '2',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum('2'))42 btn2.place(x = 70,y = 395,width = 70,height = 55)43 btn3 = tkinter.Button(root,text = '3',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum('3'))44 btn3.place(x = 140,y = 395,width = 70,height = 55)45 btn0 = tkinter.Button(root,text = '0',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum('0'))46 btn0.place(x = 70,y = 450,width = 70,height = 55)47

48

49 #运算符号按钮

50 btnac = tkinter.Button(root,text = 'AC',bd = 0.5,font = ('黑体',20),fg = 'orange',command = lambda :pressCompute('AC'))51 btnac.place(x = 0,y = 230,width = 70,height = 55)52 btnback = tkinter.Button(root,text = '←',font = ('微软雅黑',20),fg = '#4F4F4F',bd = 0.5,command = lambda:pressCompute('b'))53 btnback.place(x = 70,y = 230,width = 70,height = 55)54 btndivi = tkinter.Button(root,text = '÷',font = ('微软雅黑',20),fg = '#4F4F4F',bd = 0.5,command = lambda:pressCompute('/'))55 btndivi.place(x = 140,y = 230,width = 70,height = 55)56 btnmul = tkinter.Button(root,text ='×',font = ('微软雅黑',20),fg = "#4F4F4F",bd = 0.5,command = lambda:pressCompute('*'))57 btnmul.place(x = 210,y = 230,width = 70,height = 55)58 btnsub = tkinter.Button(root,text = '-',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:pressCompute('-'))59 btnsub.place(x = 210,y = 285,width = 70,height = 55)60 btnadd = tkinter.Button(root,text = '+',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:pressCompute('+'))61 btnadd.place(x = 210,y = 340,width = 70,height = 55)62 btnequ = tkinter.Button(root,text = '=',bg = 'orange',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:pressEqual())63 btnequ.place(x = 210,y = 395,width = 70,height = 110)64 btnper = tkinter.Button(root,text = '%',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:pressCompute('%'))65 btnper.place(x = 0,y = 450,width = 70,height = 55)66 btnpoint = tkinter.Button(root,text = '.',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:pressCompute('.'))67 btnpoint.place(x = 140,y = 450,width = 70,height = 55)68

69

70

71

72 #操作函数

73 lists = [] #设置一个变量 保存运算数字和符号的列表

74 isPressSign = False #添加一个判断是否按下运算符号的标志,假设默认没有按下按钮

75 isPressNum =False76 #数字函数

77 def pressNum(num): #设置一个数字函数 判断是否按下数字 并获取数字将数字写在显示版上

78 global lists #全局化lists和按钮状态isPressSign

79 globalisPressSign80 if isPressSign ==False:81 pass

82 else: #重新将运算符号状态设置为否

83 result.set(0)84 isPressSign =False85

86 #判断界面的数字是否为0

87 oldnum = result.get() #第一步

88 if oldnum =='0': #如过界面上数字为0 则获取按下的数字

89 result.set(num)90 else: #如果界面上的而数字不是0 则链接上新按下的数字

91 newnum = oldnum +num92 result.set(newnum) #将按下的数字写到面板中

93

94

95

96

97

98

99

100

101 #运算函数

102 defpressCompute(sign):103 globallists104 globalisPressSign105 num = result.get() #获取界面数字

106 lists.append(num) #保存界面获取的数字到列表中

107

108 lists.append(sign) #讲按下的运算符号保存到列表中

109 isPressSign =True110

111 if sign =='AC': #如果按下的是'AC'按键,则清空列表内容,讲屏幕上的数字键设置为默认数字0

112 lists.clear()113 result.set(0)114 if sign =='b': #如果按下的是退格‘’,则选取当前数字第一位到倒数第二位

115 a = num[0:-1]116 lists.clear()117 result.set(a)118

119

120

121 #获取运算结果函数

122 defpressEqual():123 globallists124 globalisPressSign125

126

127 curnum = result.get() #设置当前数字变量,并获取添加到列表

128 lists.append(curnum)129

130 computrStr = ''.join(lists) #讲列表内容用join命令将字符串链接起来

131 endNum = eval(computrStr) #用eval命令运算字符串中的内容

132 #a = str(endNum)

133 #b = '='+a #给运算结果前添加一个 ‘=’ 显示 不过这样写会有BUG 不能连续运算,这里注释,不要 =

134 #c = b[0:10] #所有的运算结果取9位数

135 result.set(endNum) #讲运算结果显示到屏幕1

136 result2.set(computrStr) #将运算过程显示到屏幕2

137 lists.clear() #清空列表内容

138

139

140

141

142 root.mainloop()

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

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

相关文章

BI之报表测试总结

报表测试总结: 1、测试准备工作: 数据准备 保证足够多的有效数据 清楚报表中涉及到的算法、公式 清楚业务功能接口 2、报表测试点 基本测试点:界面、控件、格式、布局、明显的数据错误、js报错、报表标题,报表整体风格,翻页&#…

经由因果分析,反驳AI监控学生上课,及辨别健康类谣言

来源:混沌巡洋舰想象这样一个场景,你和你心爱的女孩一起自习,你的理科好,于是你看着她听数学的网课时,有时露出困惑的表情,还有时会走神。然后等她听完,你再把你觉得她没有听懂的部分&#xff0…

python 连续三个数满足条件_计算满足条件的连续值数(Pandas Dataframe)

这是一个带有^{}-# https://stackoverflow.com/a/52718782/ Divakardef maxisland_start_len_mask(a, fillna_index -1, fillna_len 0):# a is a boolean arraypad np.zeros(a.shape[1],dtypebool)mask np.vstack((pad, a, pad))mask_step mask[1:] ! mask[:-1]idx np.fl…

java controller json_springMVC的controller层接收前端json数据

1.前端的操作:对象接收json数据方式:将所需要传的数据转化为json数据,并将这些数据以post方式传到后台的controller层,然后controller层接收json数据,并且是以对象的形式进行接收。这里面是springmvc自动控制将这些数据…

里程碑!SpaceX 载人首飞发射成功,马斯克填补美国载人飞行近十年空白

来源:雷锋网作者 | 付静1 代表着首次,标志着政府与企业持续合作前往国际空间站的开始。终于,美国太空探索技术公司(SpaceX)的首次正式载人飞行任务拉开大幕!美东时间 2020 年 11 月 15 日 19 时 27 分&…

【树状数组】CF961E Tufurama

挺巧妙的数据结构题(不过据说这是一种套路? E. Tufurama One day Polycarp decided to rewatch his absolute favourite episode of well-known TV series "Tufurama". He was pretty surprised when he got results only for season 7 episod…

取文字_把这4个字母输入word,会得到一段神秘文字,承载着一段历史

在英文的输入状态下,把“ rand()”输入word后,按下回车键,就会突然跳出一页文字把“ rand()”输入excel后,按下回车键,则会得到这样的结果,0.134582最后再把“ rand()”输入PPT,按下回车键&…

一文看懂数字孪生,工信部权威白皮书

来源:智东西11月11日消息,《由商务部、科技部、工信部、国家发改委、农业农村部、国家知识产权局、中国科学院、中国工程院等部委和深圳市人民政府共同举办的中国国际高新技术成果交易会正式开幕。作为大会主会场的重要组成部分,由工信部下属…

linux -- control service and daemon process

linux -- control service and daemon process 一、几个重要概念的讲解 1、systemd 系统启动和服务器进程由 systemd 系统和服务管理器进行管理 此程序提供一种方式,可以在启动时和运行中的系统上激活系统资源、服务器守护进程和其他进程 2、守护进程 守护进程是在执…

java 网页正文抽取算法_网页正文抽取算法 ContentExtractor

软件介绍简介ContentExtractor 是一个开源的网页正文抽取工具,用JAVA实现,具有非常高的抽取精度。算法ContentExtractor的网页正文抽取算法使用的是CEPR,适用于几乎所有的包含正文的网页。 算法简介:项目地址转移项目已和WebColle…

基于人工智能智商研究的智能定律初探

什么是智能和意识一直是智能科学领域最基础也是最具有争议的问题,2014年以来,我们在对人机通用智能发展水平的进行研究时提出了标准智能模型,统一描述人和智能机器的特征。在这个研究的基础上,2020年5月我们在《Annals of Data》发…

Postman----Presets(预先设置)的使用

使用场景: 当我们在进行接口测试post请求时,headers是必填项,我们将一个A接口的headers编写后测试完成,再次进行B接口的测试,需重新编写headers,为了简单操作,我们就用到了Presets。 Presets 作…

opengl 如何加阴影_OpenGL + Qt: 3 - 旋转动画和键盘操纵

前三篇链接:OpenGL Qt: 0 - 三角形绘制 OpenGL Qt: 1 - 用下拉框选颜色 OpenGL Qt: 2 - 走向3D,画正四面体 这一周笔者经历了漫长的洲际飞行和昏天黑地的倒时差,所以本篇内容相对少一些,侧重 Qt 而不是 OpenGL。在上一篇中&…

mybatis java类注解式_Spring整合Mybatis注解方式

Spring整合Mybatis(注解方式)环境准备jar包:Spring所需依赖:spring-context、spring-aspects、aspectjrt、aspectjweaver、spring-tx、spring-jdbcmybatis所需要:mybatis、mybatis-spring、mysql-connector-java、(druid、c3p0、HikariCP)辅助…

2020十大新兴技术揭晓!每一项都可能颠覆我们的生活

转自丨科技日报作者丨张佳欣编辑丨翟丽影全世界都在竞相研发新冠肺炎疫苗,前景令人鼓舞,我们可能会在破纪录的时间内研发出疫苗。但在未来新冠疫情仍在蔓延的情况下,技术能帮助我们更快地实现目标吗?世界经济论坛和《科学美国人》杂志本月10…

c#_导出table功能

一:第一张导出方法,简单快捷 请注意:一般表格都有真分页,查询数据时候注意把分页条件去掉#region 此处是获取的list数组 然后转table再调用ExportExcel var list"你的list数据库源"DataTable dt new DataTable();dt.…

java 协议处理器_协议处理器urlstreamhandler及contenthandler

先看段打开网页的代码:URL urlnew URL("http://souljava.blog.163.com/");URLConnection connectionurl.openConnection();connection.getInputStream();问题1:客户端浏览器怎么判断接受到的是什么数据类型?回答:java的…

自己做一个小项目python_【Python】第一个微信小项目

一、微信好友数据分析功能介绍1.爬取好友列表,显示好友昵称、性别和地域和签名, 文件保存为 xlsx 格式2.统计好友的地域分布,并且做成词云和可视化展示在地图上3.获取所有好友的头像,合并成一张大图二、需要的库1、Pyecharts:一个用于生成ech…

RISC-V的自定义CPU悖论

来源:内容编译自「eejournal」,谢谢。随着这些年的发展,RISC-V的受重视程度与与日俱增。这主要因为它是免费的、灵活的,并且速度很快。这使RISC-V成为许多开发人员的安全便捷选择。但是您会认为RISC-V是通用RISC处理器还是定制的随…

java计算加速减速_Javascript加速运动与减速运动

加速运动,即一个物体运动时速度越来越快;减速运动,即一个物体运动时速度越来越慢。现在用Javascript来模拟这两个效果,原理就是用setInterval或setTimeout动态改变一个元素与另外一个元素的距离,如xxx.style.left或xxx…