该计算器使用Python  tkinter模块开发

效果如下图

  1. import tkinter #导入tkinter模块
  2.  
  3. root = tkinter.Tk()
  4. root.minsize(280,500)
  5. root.title('李蛟龙的计算器')
  6.  
  7. #1.界面布局
  8. #显示面板
  9. result = tkinter.StringVar()
  10. result.set(0) #显示面板显示结果1,用于显示默认数字0
  11. result2 = tkinter.StringVar() #显示面板显示结果2,用于显示计算过程
  12. result2.set('')
  13. #显示版
  14. label = tkinter.Label(root,font = ('微软雅黑',20),bg = '#EEE9E9',bd ='',fg = '#828282',anchor = 'se',textvariable = result2)
  15. label.place(width = 280,height = 170)
  16. label2 = tkinter.Label(root,font = ('微软雅黑',30),bg = '#EEE9E9',bd ='',fg = 'black',anchor = 'se',textvariable = result)
  17. label2.place(y = 170,width = 280,height = 60)
  18.  
  19. #数字键按钮
  20.  
  21. btn7 = tkinter.Button(root,text = '',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum(''))
  22. btn7.place(x = 0,y = 285,width = 70,height = 55)
  23. btn8 = tkinter.Button(root,text = '',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum(''))
  24. btn8.place(x = 70,y = 285,width = 70,height = 55)
  25. btn9 = tkinter.Button(root,text = '',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum(''))
  26. btn9.place(x = 140,y = 285,width = 70,height = 55)
  27.  
  28. btn4 = tkinter.Button(root,text = '',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum(''))
  29. btn4.place(x = 0,y = 340,width = 70,height = 55)
  30. btn5 = tkinter.Button(root,text = '',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum(''))
  31. btn5.place(x = 70,y = 340,width = 70,height = 55)
  32. btn6 = tkinter.Button(root,text = '',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum(''))
  33. btn6.place(x = 140,y = 340,width = 70,height = 55)
  34.  
  35. btn1 = tkinter.Button(root,text = '',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum(''))
  36. btn1.place(x = 0,y = 395,width = 70,height = 55)
  37. btn2 = tkinter.Button(root,text = '',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum(''))
  38. btn2.place(x = 70,y = 395,width = 70,height = 55)
  39. btn3 = tkinter.Button(root,text = '',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum(''))
  40. btn3.place(x = 140,y = 395,width = 70,height = 55)
  41. btn0 = tkinter.Button(root,text = '',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum(''))
  42. btn0.place(x = 70,y = 450,width = 70,height = 55)
  43.  
  44. #运算符号按钮
  45. btnac = tkinter.Button(root,text = 'AC',bd = 0.5,font = ('黑体',20),fg = 'orange',command = lambda :pressCompute('AC'))
  46. btnac.place(x = 0,y = 230,width = 70,height = 55)
  47. btnback = tkinter.Button(root,text = '←',font = ('微软雅黑',20),fg = '#4F4F4F',bd = 0.5,command = lambda:pressCompute('b'))
  48. btnback.place(x = 70,y = 230,width = 70,height = 55)
  49. btndivi = tkinter.Button(root,text = '÷',font = ('微软雅黑',20),fg = '#4F4F4F',bd = 0.5,command = lambda:pressCompute('/'))
  50. btndivi.place(x = 140,y = 230,width = 70,height = 55)
  51. btnmul = tkinter.Button(root,text ='×',font = ('微软雅黑',20),fg = "#4F4F4F",bd = 0.5,command = lambda:pressCompute('*'))
  52. btnmul.place(x = 210,y = 230,width = 70,height = 55)
  53. btnsub = tkinter.Button(root,text = '-',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:pressCompute('-'))
  54. btnsub.place(x = 210,y = 285,width = 70,height = 55)
  55. btnadd = tkinter.Button(root,text = '+',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:pressCompute('+'))
  56. btnadd.place(x = 210,y = 340,width = 70,height = 55)
  57. btnequ = tkinter.Button(root,text = '=',bg = 'orange',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda :pressEqual())
  58. btnequ.place(x = 210,y = 395,width = 70,height = 110)
  59. btnper = tkinter.Button(root,text = '%',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:pressCompute('%'))
  60. btnper.place(x = 0,y = 450,width = 70,height = 55)
  61. btnpoint = tkinter.Button(root,text = '.',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda:pressCompute('.'))
  62. btnpoint.place(x = 140,y = 450,width = 70,height = 55)
  63.  
  64. #操作函数
  65. lists = [] #设置一个变量 保存运算数字和符号的列表
  66. isPressSign = False #添加一个判断是否按下运算符号的标志,假设默认没有按下按钮
  67. isPressNum = False
  68. #数字函数
  69. def pressNum(num): #设置一个数字函数 判断是否按下数字 并获取数字将数字写在显示版上
  70. global lists #全局化lists和按钮状态isPressSign
  71. global isPressSign
  72. if isPressSign == False:
  73. pass
  74. else: #重新将运算符号状态设置为否
  75. result.set(0)
  76. isPressSign = False
  77.  
  78. #判断界面的数字是否为0
  79. oldnum = result.get() #第一步
  80. if oldnum =='': #如过界面上数字为0 则获取按下的数字
  81. result.set(num)
  82. else: #如果界面上的而数字不是0 则链接上新按下的数字
  83. newnum = oldnum + num
  84. result.set(newnum) #将按下的数字写到面板中
  85.  
  86. #运算函数
  87. def pressCompute(sign):
  88. global lists
  89. global isPressSign
  90. num = result.get() #获取界面数字
  91. lists.append(num) #保存界面获取的数字到列表中
  92.  
  93. lists.append(sign) #讲按下的运算符号保存到列表中
  94. isPressSign = True
  95.  
  96. if sign =='AC': #如果按下的是'AC'按键,则清空列表内容,讲屏幕上的数字键设置为默认数字0
  97. lists.clear()
  98. result.set(0)
  99. if sign =='b': #如果按下的是退格‘’,则选取当前数字第一位到倒数第二位
  100. a = num[0:-1]
  101. lists.clear()
  102. result.set(a)
  103.  
  104. #获取运算结果函数
  105. def pressEqual():
  106. global lists
  107. global isPressSign
  108.  
  109. curnum = result.get() #设置当前数字变量,并获取添加到列表
  110. lists.append(curnum)
  111.  
  112. computrStr = ''.join(lists) #讲列表内容用join命令将字符串链接起来
  113. endNum = eval(computrStr) #用eval命令运算字符串中的内容
  114. # a = str(endNum)
  115. # b = '='+a #给运算结果前添加一个 ‘=’ 显示 不过这样写会有BUG 不能连续运算,这里注释,不要 =
  116. # c = b[0:10] #所有的运算结果取9位数
  117. result.set(endNum) #讲运算结果显示到屏幕1
  118. result2.set(computrStr) #将运算过程显示到屏幕2
  119. lists.clear() #清空列表内容
  120.  
  121. root.mainloop()

欢迎大家评论指导,如果你也对Python有兴趣,想和博主聊聊技术,爱情,理想,私生活,可以关注我微信账号,有100G的学习资料等着你哦!

因为字数不够,此处省略一万字,用#号代替

###############################################

################################################################

##################################################################################

如何用Python写一个计算器软件 附带效果图的更多相关文章

  1. 自动化测试(三)如何用python写一个函数,这个函数的功能是,传入一个数字,产生N条邮箱,产生的邮箱不能重复。

    写一个函数,这个函数的功能是,传入一个数字,产生N条邮箱,产生的邮箱不能重复.邮箱前面的长度是6-12之间,产生的邮箱必须包含大写字母.小写字母.数字和特殊字符 和上一期一样 代码中间有段比较混沌 有 ...

  2. 自动化测试(二)如何用python写一个用户登陆功能

    需求信息: 写一个判断登录的程序: 输入: username password 最大错误次数是3次,输入3次都没有登录成功,提示错误次数达到上限 需要判断输入是否为空,什么也不输入,输入一个空格.n个 ...

  3. 如何用 Python 写一个简易的抽奖程序

    不知道有多少人是被这个头图骗进来的:) 事情的起因是这样的,上周有同学问小编,看着小编的示例代码敲代码,感觉自己也会写了,如果不看的话,七七八八可能也写的出来,但是一旦自己独立写一段程序,感觉到无从下 ...

  4. 如何用Python写一个贪吃蛇AI

    前言 这两天在网上看到一张让人涨姿势的图片,图片中展示的是贪吃蛇游戏, 估计大部分人都玩过.但如果仅仅是贪吃蛇游戏,那么它就没有什么让人涨姿势的地方了. 问题的关键在于,图片中的贪吃蛇真的很贪吃XD, ...

  5. 如何用Python写一个每分每时每天的定时程序

    1.计算生日是星期几 当你女朋友要过生日了,你肯定要定找家饭店订个餐庆祝一下,餐馆工作日会空一些,周末位置不好定,要是能知道她的生日是星期几就好了,下面这个程序就能搞定~~ 比如girl friend ...

  6. 【Python】如何基于Python写一个TCP反向连接后门

    首发安全客 如何基于Python写一个TCP反向连接后门 https://www.anquanke.com/post/id/92401 0x0 介绍 在Linux系统做未授权测试,我们须准备一个安全的 ...

  7. 用Python写一个简单的Web框架

    一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI( ...

  8. 十行代码--用python写一个USB病毒 (知乎 DeepWeaver)

    昨天在上厕所的时候突发奇想,当你把usb插进去的时候,能不能自动执行usb上的程序.查了一下,发现只有windows上可以,具体的大家也可以搜索(搜索关键词usb autorun)到.但是,如果我想, ...

  9. linux常用终端指令+如何用vim写一个c程序并运行

    在装好ubuntu之后今天学习了一些linux的一些基础知识: windows里面打开命令窗口是win+r,在linux系统里面,ctrl+alt+t打开终端,今天的一些指令都是围绕终端来说的 首先s ...

随机推荐

  1. Django中添加富文本编辑器

    使用的是CKeditor这个模块 1.安装: pip install django-ckeditor 2.将ckeditor注册到settings.py文件中, 并添加ckeditor的url到你项目 ...

  2. hdu 1018 共同交流~

    Big Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  3. javaWeb 基础知识

    cookie  深度解析:  http://blog.csdn.net/ghsau/article/details/20395681 cookie 的作用: 利用存在客户端本地的缓存让无状态的服务器也 ...

  4. 【NOIP2015提高组】Day2 T2 子串

    题目描述 有两个仅包含小写英文字母的字符串 A 和 B.现在要从字符串 A 中取出 k 个互不重叠的非空子串,然后把这 k 个子串按照其在字符串 A 中出现的顺序依次连接起来得到一 个新的字符串,请问 ...

  5. LINUX 笔记-read命令

    作用:读入值给变量 1.read  从键盘读入字符到name变量 2.read -p 'msg' var... 输入提示 3.read -s vars 隐藏输入 4.read读取文件时,每次调用会读取 ...

  6. call()与apply() 改变this指向

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #a5b2b9 } span.Apple-tab-span ...

  7. component及刚体rigidbody用法

    关于getcomponent函数,rigidbody(2d)的嵌套关系及用法 1.getcomponent函数 在unity中脚本可以看成是可定义的组件,我们经常要访问同一对象或不同对象中的脚本,可以 ...

  8. JavaScript+HTML5 实现打地鼠小游戏

    一.游戏简介 打地鼠这个游戏相信大家都不陌生,也是童年时候一款经典的游戏.本次游戏的编写是以html文件形式完成的,并且使用HBulider软件进行编写,使用谷歌浏览器展示效果,游戏将会采用JavaS ...

  9. iOS动画学习 -隐式动画

    事务 Core Animation基于一个假设,说屏幕上的任何东西都可以(或者可能)做动画.你并不需要在Core Animation中手动打开动画,但是你需要明确地关闭它,否则它会一直存在. 当你改变 ...

  10. Tinyhttpd阅读笔记

    1.简介 tinyhttpd是一个开源的超轻量型Http Server,阅读其源码,可以对http协议,微型服务器有进一步的了解. 源码链接: 参考博客:tinyhttpd源码分析 2.笔记 ---- ...