Python实现的计算器功能示例


Posted in Python onApril 26, 2018

本文实例讲述了Python实现的计算器功能。分享给大家供大家参考,具体如下:

源码:

# -*- coding:utf-8 -*-
#! python2
from tkinter import *
__author__ = 'tianshl'
__date__ = '2017/10/16'
class Application(Frame):
 def __init__(self):
  Frame.__init__(self)
  self.grid()
  self.mem = ''    # 内存中的数据
  self.opt = ''    # 操作符
  self.display = StringVar() # 显示的数据
  self.display.set('0')  # 初始值
  self.need_cls = False  # 是否需要清屏
  self.create_widgets()
 # 清空
 def clear(self):
  self.mem = ''
  self.display.set('0')
 # 取反
 def negative(self):
  self.display.set(eval('-' + self.display.get()))
 # 四则运算
 def option(self, opt):
  if not self.need_cls:
   self.calculate()
  self.opt = opt
  self.need_cls = True
  self.mem = self.display.get()
 # 计算结果
 def calculate(self):
  if self.opt:
   try:
    self.display.set(eval(self.mem + self.opt + self.display.get()))
   except Exception:
    self.display.set('错误')
    self.need_cls = True
   self.opt = ''
   self.mem = ''
 # 百分比
 def percent(self):
  base = float(self.mem or 1) / 100
  display = eval('{}*{}'.format(self.display.get(), base))
  int_display = int(display)
  display = int_display if display == int_display else display
  self.display.set(display)
  self.need_cls = True
 # 输入
 def input(self, key):
  if self.need_cls:
   self.display.set('0')
   self.need_cls = False
  display = self.display.get()
  if display == '0' and key != '.':
   self.display.set(key)
  else:
   if '.' in display and key == '.':
    return
   self.display.set(display + key)
 # 创建组件
 def create_widgets(self):
  # 显示框
  Entry(self, textvariable=self.display, state="readonly", width=35).grid(
   row=0, column=0, columnspan=4)
  # 键盘
  keyboards = [
   ['C', '+/-', '%', '/'], 
   ['7', '8', '9', '*'], 
   ['4', '5', '6', '-'],
   ['1', '2', '3', '+'],
   ['0', '.', '=']
  ]
  for row, keys in enumerate(keyboards):
   row_num = 3 + row
   for col, key in enumerate(keys):
    if key == 'C':
     command = self.clear
    elif key == '+/-':
     command = self.negative
    elif key == '%':
     command = self.percent
    elif key in ['+', '-', '*', '/']:
     command = lambda s=key: self.option(s)
    elif key == '=':
     command = self.calculate
    else:
     command = lambda s=key: self.input(s)
    bt = Button(self, text=key, command=command, width=6)
    bt.grid(row=row_num, column=col)
app = Application()
# 设置窗口标题:
app.master.title('3water.com - 计算器')
# 设置窗口尺寸/位置
app.master.geometry("326x170+200+200")
# 设置窗口不可变
app.master.resizable(width=False, height=False)
# 主消息循环:
app.mainloop()

运行效果:

Python实现的计算器功能示例

PS:这里再为大家推荐几款计算工具供大家进一步参考借鉴:

在线一元函数(方程)求解计算工具:
http://tools.3water.com/jisuanqi/equ_jisuanqi

科学计算器在线使用_高级计算器在线计算:
http://tools.3water.com/jisuanqi/jsqkexue

在线计算器_标准计算器:
http://tools.3water.com/jisuanqi/jsq

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python实现数通设备端口监控示例
Apr 02 Python
Python的垃圾回收机制深入分析
Jul 16 Python
python微信跳一跳系列之棋子定位颜色识别
Feb 26 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
May 30 Python
python迭代dict的key和value的方法
Jul 06 Python
Pytorch 实现自定义参数层的例子
Aug 17 Python
Python SELENIUM上传文件或图片实现过程
Oct 28 Python
基于python plotly交互式图表大全
Dec 07 Python
Python API len函数操作过程解析
Mar 05 Python
Python如何发送与接收大型数组
Aug 07 Python
如何在pycharm中安装第三方包
Oct 27 Python
python中的plt.cm.Paired用法说明
May 31 Python
python email smtplib模块发送邮件代码实例
Apr 26 #Python
Python利用正则表达式实现计算器算法思路解析
Apr 25 #Python
Python实现随机生成手机号及正则验证手机号的方法
Apr 25 #Python
Python实现按中文排序的方法示例
Apr 25 #Python
Python实现的基于优先等级分配糖果问题算法示例
Apr 25 #Python
python自动登录12306并自动点击验证码完成登录的实现源代码
Apr 25 #Python
PyQt5实现拖放功能
Apr 25 #Python
You might like
ajax+php打造进度条代码[readyState各状态说明]
2010/04/12 PHP
PHP实现多文件上传的方法
2015/07/08 PHP
部署PHP时的4个配置修改说明
2015/10/19 PHP
PDO::errorCode讲解
2019/01/28 PHP
jquery pagination插件实现无刷新分页代码
2009/10/13 Javascript
阻止子元素继承父元素事件具体思路及实现
2013/05/02 Javascript
无限树Jquery插件zTree的常用功能特性总结
2014/09/11 Javascript
js对字符的验证方法汇总
2015/02/04 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
2016/01/26 Javascript
javascript鼠标跟随运动3种效果(眼球效果,苹果菜单,方向跟随)
2016/10/27 Javascript
JQueryEasyUI框架下的combobox的取值和绑定的方法
2017/01/22 Javascript
JS去除字符串中空格的方法
2017/02/14 Javascript
H5上传本地图片并预览功能
2017/05/08 Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
2017/07/04 Javascript
基于js原生和ajax的get和post方法以及jsonp的原生写法实例
2017/10/16 Javascript
Linux Centos7.2下安装nodejs&npm配置全局路径的教程
2018/05/15 NodeJs
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
2018/08/22 Javascript
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
2019/06/18 Javascript
Vuejs中的watch实例详解(监听者)
2020/01/05 Javascript
vue中使用echarts的示例
2021/01/03 Vue.js
python使用KNN算法识别手写数字
2019/04/25 Python
Python 串口读写的实现方法
2019/06/12 Python
Django中的静态文件管理过程解析
2019/08/01 Python
简单了解Python3 bytes和str类型的区别和联系
2019/12/19 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
2020/02/09 Python
Python编程快速上手——强口令检测算法案例分析
2020/02/29 Python
Python爬虫获取页面所有URL链接过程详解
2020/06/04 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
HTML5添加鼠标悬浮音响效果不使用FLASH
2014/04/23 HTML / CSS
美国电视购物HSN官网:HSN
2016/09/07 全球购物
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
大一新生军训时的自我评价分享
2013/12/05 职场文书
优秀毕业生自我鉴定
2014/01/19 职场文书
怎样写辞职信
2015/02/27 职场文书
Golang 实现获取当前函数名称和文件行号等操作
2021/05/08 Golang