Python编程使用tkinter模块实现计算器软件完整代码示例


Posted in Python onNovember 29, 2017

Python 提供了多个图形开发界面的库。Tkinter就是其中之一。 Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。

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

效果如下图

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 ='9',fg = '#828282',anchor = 'se',textvariable = result2)
label.place(width = 280,height = 170)
label2 = tkinter.Label(root,font = ('微软雅黑',30),bg = '#EEE9E9',bd ='9',fg = 'black',anchor = 'se',textvariable = result)
label2.place(y = 170,width = 280,height = 60)

#数字键按钮

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

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

btn1 = tkinter.Button(root,text = '1',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum('1'))
btn1.place(x = 0,y = 395,width = 70,height = 55)
btn2 = tkinter.Button(root,text = '2',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum('2'))
btn2.place(x = 70,y = 395,width = 70,height = 55)
btn3 = tkinter.Button(root,text = '3',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum('3'))
btn3.place(x = 140,y = 395,width = 70,height = 55)
btn0 = tkinter.Button(root,text = '0',font = ('微软雅黑',20),fg = ('#4F4F4F'),bd = 0.5,command = lambda : pressNum('0'))
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':         #如过界面上数字为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编程使用tkinter模块实现计算器软件完整代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
python 简易计算器程序,代码就几行
Aug 29 Python
easy_install python包安装管理工具介绍
Feb 10 Python
Django中实现一个高性能计数器(Counter)实例
Jul 09 Python
python循环监控远程端口的方法
Mar 14 Python
Python 面试中 8 个必考问题
Nov 16 Python
python基于itchat模块实现微信防撤回
Apr 29 Python
对Python _取log的几种方式小结
Jul 25 Python
python MultipartEncoder传输zip文件实例
Apr 07 Python
Python之变量类型和if判断方式
May 05 Python
python空元组在all中返回结果详解
Dec 15 Python
python asyncio 协程库的使用
Jan 21 Python
pytorch 中nn.Dropout的使用说明
May 20 Python
Python科学画图代码分享
Nov 29 #Python
Python中Scrapy爬虫图片处理详解
Nov 29 #Python
Python使用django框架实现多人在线匿名聊天的小程序
Nov 29 #Python
Python实现的计数排序算法示例
Nov 29 #Python
Scrapy框架CrawlSpiders的介绍以及使用详解
Nov 29 #Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
Nov 29 #Python
Python快速排序算法实例分析
Nov 29 #Python
You might like
PHP MYSQL乱码问题,使用SET NAMES utf8校正
2009/11/30 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
2010/04/12 PHP
解析左右值无限分类的实现算法
2013/06/20 PHP
PHP使用mysql_fetch_object从查询结果中获取对象集的方法
2015/03/18 PHP
php实现微信模拟登陆、获取用户列表及群发消息功能示例
2017/06/28 PHP
关于IE7 IE8弹出窗口顶上
2008/12/22 Javascript
Node.js开发指南中的简单实例(mysql版)
2013/09/17 Javascript
JavaScript中按位“异或”运算符使用介绍
2014/03/14 Javascript
Javascript 运动中Offset的bug解决方案
2014/12/24 Javascript
js实现微信分享代码
2020/10/11 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
2016/04/01 Javascript
json传值以及ajax接收详解
2016/05/24 Javascript
jQuery包裹节点用法完整示例
2016/09/13 Javascript
javascript常用的设计模式
2017/02/09 Javascript
js实现音频控制进度条功能
2017/04/01 Javascript
深入理解Angular4中的依赖注入
2017/06/07 Javascript
解决layer弹层遮罩挡住窗体的问题
2018/08/17 Javascript
element-ui 上传图片后清空图片显示的实例
2018/09/04 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
2018/09/27 Javascript
微信小程序wx:for循环的实例详解
2018/10/07 Javascript
vue+node 实现视频在线播放的实例代码
2020/10/19 Javascript
vue项目配置同一局域网可使用ip访问的操作
2020/10/23 Javascript
通过代码实例展示Python中列表生成式的用法
2015/03/31 Python
Python获取当前路径实现代码
2017/05/08 Python
python中 * 的用法详解
2019/07/10 Python
TensorFlow实现打印每一层的输出
2020/01/21 Python
python绘制玫瑰的实现代码
2020/03/02 Python
奥地利婴儿用品和玩具购物网站:baby-markt.at
2020/01/26 全球购物
如何为DataGridView添加一个定制的Column Type
2014/01/21 面试题
销售部主管岗位职责
2013/12/18 职场文书
运动会入场词200字
2014/02/15 职场文书
代办委托书怎么写
2014/08/01 职场文书
预备党员自我批评思想汇报
2014/10/10 职场文书
党员检讨书
2014/10/13 职场文书
新郎接新娘保证书
2015/05/08 职场文书
一文弄懂MySQL中redo log与binlog的区别
2022/02/15 MySQL