如何用Python写一个计算器软件 附带效果图
该计算器使用Python tkinter模块开发
效果如下图
- import tkinter #导入tkinter模块
- root = tkinter.Tk()
- root.minsize(280,500)
- root.title('李蛟龙的计算器')
- #1.界面布局
- #显示面板
- result = tkinter.StringVar()
- result.set(0) #显示面板显示结果1,用于显示默认数字0
- result2 = tkinter.StringVar() #显示面板显示结果2,用于显示计算过程
- result2.set('')
- #显示版
- label = tkinter.Label(root,font = ('微软雅黑',20),bg = '#EEE9E9',bd ='',fg = '#828282',anchor = 'se',textvariable = result2)
- label.place(width = 280,height = 170)
- label2 = tkinter.Label(root,font = ('微软雅黑',30),bg = '#EEE9E9',bd ='',fg = 'black',anchor = 'se',textvariable = result)
- label2.place(y = 170,width = 280,height = 60)
- #数字键按钮
- btn7 = tkinter.Button(root,text = '',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum(''))
- btn7.place(x = 0,y = 285,width = 70,height = 55)
- btn8 = tkinter.Button(root,text = '',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum(''))
- btn8.place(x = 70,y = 285,width = 70,height = 55)
- btn9 = tkinter.Button(root,text = '',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum(''))
- btn9.place(x = 140,y = 285,width = 70,height = 55)
- btn4 = tkinter.Button(root,text = '',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum(''))
- btn4.place(x = 0,y = 340,width = 70,height = 55)
- btn5 = tkinter.Button(root,text = '',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum(''))
- btn5.place(x = 70,y = 340,width = 70,height = 55)
- btn6 = tkinter.Button(root,text = '',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum(''))
- btn6.place(x = 140,y = 340,width = 70,height = 55)
- btn1 = tkinter.Button(root,text = '',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum(''))
- btn1.place(x = 0,y = 395,width = 70,height = 55)
- btn2 = tkinter.Button(root,text = '',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum(''))
- btn2.place(x = 70,y = 395,width = 70,height = 55)
- btn3 = tkinter.Button(root,text = '',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum(''))
- btn3.place(x = 140,y = 395,width = 70,height = 55)
- btn0 = tkinter.Button(root,text = '',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum(''))
- btn0.place(x = 70,y = 450,width = 70,height = 55)
- #运算符号按钮
- btnac = tkinter.Button(root,text = 'AC',bd = 0.5,font = ('黑体',20),fg = 'orange',command = lambda :pressCompute('AC'))
- btnac.place(x = 0,y = 230,width = 70,height = 55)
- btnback = tkinter.Button(root,text = '←',font = ('微软雅黑',20),fg = '#4F4F4F',bd = 0.5,command = lambda:pressCompute('b'))
- btnback.place(x = 70,y = 230,width = 70,height = 55)
- btndivi = tkinter.Button(root,text = '÷',font = ('微软雅黑',20),fg = '#4F4F4F',bd = 0.5,command = lambda:pressCompute('/'))
- btndivi.place(x = 140,y = 230,width = 70,height = 55)
- btnmul = tkinter.Button(root,text ='×',font = ('微软雅黑',20),fg = "#4F4F4F",bd = 0.5,command = lambda:pressCompute('*'))
- btnmul.place(x = 210,y = 230,width = 70,height = 55)
- btnsub = tkinter.Button(root,text = '-',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:pressCompute('-'))
- btnsub.place(x = 210,y = 285,width = 70,height = 55)
- btnadd = tkinter.Button(root,text = '+',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:pressCompute('+'))
- btnadd.place(x = 210,y = 340,width = 70,height = 55)
- btnequ = tkinter.Button(root,text = '=',bg = 'orange',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda :pressEqual())
- btnequ.place(x = 210,y = 395,width = 70,height = 110)
- btnper = tkinter.Button(root,text = '%',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:pressCompute('%'))
- btnper.place(x = 0,y = 450,width = 70,height = 55)
- btnpoint = tkinter.Button(root,text = '.',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:pressCompute('.'))
- btnpoint.place(x = 140,y = 450,width = 70,height = 55)
- #操作函数
- lists = [] #设置一个变量 保存运算数字和符号的列表
- isPressSign = False #添加一个判断是否按下运算符号的标志,假设默认没有按下按钮
- isPressNum = False
- #数字函数
- def pressNum(num): #设置一个数字函数 判断是否按下数字 并获取数字将数字写在显示版上
- global lists #全局化lists和按钮状态isPressSign
- global isPressSign
- if isPressSign == False:
- pass
- else: #重新将运算符号状态设置为否
- result.set(0)
- isPressSign = False
- #判断界面的数字是否为0
- oldnum = result.get() #第一步
- if oldnum =='': #如过界面上数字为0 则获取按下的数字
- result.set(num)
- else: #如果界面上的而数字不是0 则链接上新按下的数字
- newnum = oldnum + num
- result.set(newnum) #将按下的数字写到面板中
- #运算函数
- def pressCompute(sign):
- global lists
- global isPressSign
- num = result.get() #获取界面数字
- lists.append(num) #保存界面获取的数字到列表中
- lists.append(sign) #讲按下的运算符号保存到列表中
- isPressSign = True
- if sign =='AC': #如果按下的是'AC'按键,则清空列表内容,讲屏幕上的数字键设置为默认数字0
- lists.clear()
- result.set(0)
- if sign =='b': #如果按下的是退格‘’,则选取当前数字第一位到倒数第二位
- a = num[0:-1]
- lists.clear()
- result.set(a)
- #获取运算结果函数
- def pressEqual():
- global lists
- global isPressSign
- curnum = result.get() #设置当前数字变量,并获取添加到列表
- lists.append(curnum)
- computrStr = ''.join(lists) #讲列表内容用join命令将字符串链接起来
- endNum = eval(computrStr) #用eval命令运算字符串中的内容
- # a = str(endNum)
- # b = '='+a #给运算结果前添加一个 ‘=’ 显示 不过这样写会有BUG 不能连续运算,这里注释,不要 =
- # c = b[0:10] #所有的运算结果取9位数
- result.set(endNum) #讲运算结果显示到屏幕1
- result2.set(computrStr) #将运算过程显示到屏幕2
- lists.clear() #清空列表内容
- root.mainloop()
欢迎大家评论指导,如果你也对Python有兴趣,想和博主聊聊技术,爱情,理想,私生活,可以关注我微信账号,有100G的学习资料等着你哦!
因为字数不够,此处省略一万字,用#号代替
###############################################
################################################################
##################################################################################
如何用Python写一个计算器软件 附带效果图的更多相关文章
- 自动化测试(三)如何用python写一个函数,这个函数的功能是,传入一个数字,产生N条邮箱,产生的邮箱不能重复。
写一个函数,这个函数的功能是,传入一个数字,产生N条邮箱,产生的邮箱不能重复.邮箱前面的长度是6-12之间,产生的邮箱必须包含大写字母.小写字母.数字和特殊字符 和上一期一样 代码中间有段比较混沌 有 ...
- 自动化测试(二)如何用python写一个用户登陆功能
需求信息: 写一个判断登录的程序: 输入: username password 最大错误次数是3次,输入3次都没有登录成功,提示错误次数达到上限 需要判断输入是否为空,什么也不输入,输入一个空格.n个 ...
- 如何用 Python 写一个简易的抽奖程序
不知道有多少人是被这个头图骗进来的:) 事情的起因是这样的,上周有同学问小编,看着小编的示例代码敲代码,感觉自己也会写了,如果不看的话,七七八八可能也写的出来,但是一旦自己独立写一段程序,感觉到无从下 ...
- 如何用Python写一个贪吃蛇AI
前言 这两天在网上看到一张让人涨姿势的图片,图片中展示的是贪吃蛇游戏, 估计大部分人都玩过.但如果仅仅是贪吃蛇游戏,那么它就没有什么让人涨姿势的地方了. 问题的关键在于,图片中的贪吃蛇真的很贪吃XD, ...
- 如何用Python写一个每分每时每天的定时程序
1.计算生日是星期几 当你女朋友要过生日了,你肯定要定找家饭店订个餐庆祝一下,餐馆工作日会空一些,周末位置不好定,要是能知道她的生日是星期几就好了,下面这个程序就能搞定~~ 比如girl friend ...
- 【Python】如何基于Python写一个TCP反向连接后门
首发安全客 如何基于Python写一个TCP反向连接后门 https://www.anquanke.com/post/id/92401 0x0 介绍 在Linux系统做未授权测试,我们须准备一个安全的 ...
- 用Python写一个简单的Web框架
一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI( ...
- 十行代码--用python写一个USB病毒 (知乎 DeepWeaver)
昨天在上厕所的时候突发奇想,当你把usb插进去的时候,能不能自动执行usb上的程序.查了一下,发现只有windows上可以,具体的大家也可以搜索(搜索关键词usb autorun)到.但是,如果我想, ...
- linux常用终端指令+如何用vim写一个c程序并运行
在装好ubuntu之后今天学习了一些linux的一些基础知识: windows里面打开命令窗口是win+r,在linux系统里面,ctrl+alt+t打开终端,今天的一些指令都是围绕终端来说的 首先s ...
随机推荐
- Django中添加富文本编辑器
使用的是CKeditor这个模块 1.安装: pip install django-ckeditor 2.将ckeditor注册到settings.py文件中, 并添加ckeditor的url到你项目 ...
- hdu 1018 共同交流~
Big Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- javaWeb 基础知识
cookie 深度解析: http://blog.csdn.net/ghsau/article/details/20395681 cookie 的作用: 利用存在客户端本地的缓存让无状态的服务器也 ...
- 【NOIP2015提高组】Day2 T2 子串
题目描述 有两个仅包含小写英文字母的字符串 A 和 B.现在要从字符串 A 中取出 k 个互不重叠的非空子串,然后把这 k 个子串按照其在字符串 A 中出现的顺序依次连接起来得到一 个新的字符串,请问 ...
- LINUX 笔记-read命令
作用:读入值给变量 1.read 从键盘读入字符到name变量 2.read -p 'msg' var... 输入提示 3.read -s vars 隐藏输入 4.read读取文件时,每次调用会读取 ...
- call()与apply() 改变this指向
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #a5b2b9 } span.Apple-tab-span ...
- component及刚体rigidbody用法
关于getcomponent函数,rigidbody(2d)的嵌套关系及用法 1.getcomponent函数 在unity中脚本可以看成是可定义的组件,我们经常要访问同一对象或不同对象中的脚本,可以 ...
- JavaScript+HTML5 实现打地鼠小游戏
一.游戏简介 打地鼠这个游戏相信大家都不陌生,也是童年时候一款经典的游戏.本次游戏的编写是以html文件形式完成的,并且使用HBulider软件进行编写,使用谷歌浏览器展示效果,游戏将会采用JavaS ...
- iOS动画学习 -隐式动画
事务 Core Animation基于一个假设,说屏幕上的任何东西都可以(或者可能)做动画.你并不需要在Core Animation中手动打开动画,但是你需要明确地关闭它,否则它会一直存在. 当你改变 ...
- Tinyhttpd阅读笔记
1.简介 tinyhttpd是一个开源的超轻量型Http Server,阅读其源码,可以对http协议,微型服务器有进一步的了解. 源码链接: 参考博客:tinyhttpd源码分析 2.笔记 ---- ...