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常用知识点汇总
May 08 Python
python读取二进制mnist实例详解
May 31 Python
Python爬取十篇新闻统计TF-IDF
Jan 03 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
Jul 02 Python
python Tkinter版学生管理系统
Feb 20 Python
分享8点超级有用的Python编程建议(推荐)
Oct 13 Python
Python-opencv 双线性插值实例
Jan 17 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
Feb 28 Python
python 已知三条边求三角形的角度案例
Apr 12 Python
在django中form的label和verbose name的区别说明
May 20 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
Nov 05 Python
Python实现简单猜数字游戏
Feb 03 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
PHP常用代码大全(新手入门必备)
2010/06/29 PHP
PHP中余数、取余的妙用
2015/06/29 PHP
php合并数组并保留键值的实现方法
2018/03/12 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
jquery 获取自定义属性(attr和prop)的实现代码
2012/06/27 Javascript
使用jQuery fancybox插件打造一个实用的数据传输模态弹出窗体
2013/01/15 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
2015/03/04 Javascript
基于JS实现PHP的sprintf函数实例
2015/11/14 Javascript
基于JavaScript实现回到页面顶部动画代码
2016/05/24 Javascript
详解基于Koa2开发微信二维码扫码支付相关流程
2018/05/16 Javascript
layui的布局和表格的渲染以及动态生成表格的方法
2019/09/18 Javascript
vue打包npm run build时候界面报错的解决
2020/08/13 Javascript
[05:20]卡尔工作室_DOTA2新手教学_DOTA2超强新手功能
2013/04/22 DOTA
在SAE上部署Python的Django框架的一些问题汇总
2015/05/30 Python
Python爬虫框架Scrapy实战之批量抓取招聘信息
2015/08/07 Python
Python实现通讯录功能
2018/02/22 Python
python中sys.argv函数精简概括
2018/07/08 Python
Python实现钉钉发送报警消息的方法
2019/02/20 Python
python 实现12bit灰度图像映射到8bit显示的方法
2019/07/08 Python
python flask中动态URL规则详解
2019/11/22 Python
Python属性和内建属性实例解析
2020/01/14 Python
tensorflow 限制显存大小的实现
2020/02/03 Python
使用python把xmind转换成excel测试用例的实现代码
2020/10/12 Python
实例讲解使用SVG制作loading加载动画的方法
2016/04/05 HTML / CSS
一套SQL笔试题
2016/08/14 面试题
化学专业毕业生自荐信
2013/11/15 职场文书
网络信息安全承诺书
2014/03/26 职场文书
出生证明公证书
2014/04/09 职场文书
计算机系统管理员求职信
2014/06/20 职场文书
项目申请汇报材料
2014/08/16 职场文书
模范班主任事迹材料
2014/12/17 职场文书
总经理岗位职责范本
2015/04/01 职场文书
python b站视频下载的五种版本
2021/05/27 Python
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers
Python装饰器详细介绍
2022/03/25 Python
 Redis 串行生成顺序编码的方法实现
2022/04/03 Redis