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在多玩图片上下载妹子图的实现代码
Aug 13 Python
使用 Python 实现微信群友统计器的思路详解
Sep 26 Python
django框架之cookie/session的使用示例(小结)
Oct 15 Python
[原创]Python入门教程5. 字典基本操作【定义、运算、常用函数】
Nov 01 Python
图文详解python安装Scrapy框架步骤
May 20 Python
在Python中append以及extend返回None的例子
Jul 20 Python
Python实现数值积分方式
Nov 20 Python
基于Python中random.sample()的替代方案
May 23 Python
在pycharm中关掉ipython console/PyDev操作
Jun 09 Python
Python SMTP配置参数并发送邮件
Jun 16 Python
python 基于PYMYSQL使用MYSQL数据库
Dec 24 Python
详解Python模块化编程与装饰器
Jan 16 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支付宝手机网页支付类实例
2015/03/04 PHP
PHP加密解密字符串汇总
2015/04/26 PHP
PHP定时执行任务的3种方法详解
2015/12/21 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
2016/03/21 PHP
Yii2 加载css、js 载静态资源的方法
2017/03/10 PHP
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
JQuery 插件制作实践 xMarquee插件V1.0
2010/04/02 Javascript
Grid得到选择行数据的方法总结
2011/01/17 Javascript
浅析JavaScript中的CSS属性及命名规范
2013/11/28 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
js函数参数设置默认值的一种变通实现方法
2014/05/26 Javascript
dreamweaver 8实现Jquery自动提示
2014/12/04 Javascript
JavaScript中0和""比较引发的问题
2016/05/26 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
JS实现的随机排序功能算法示例
2017/06/09 Javascript
详解使用Typescript开发node.js项目(简单的环境配置)
2017/10/09 Javascript
vue基于mint-ui的城市选择3级联动的示例
2017/10/25 Javascript
微信小程序实现简单input正则表达式验证功能示例
2017/11/30 Javascript
vuejs选中当前样式active的实例
2018/08/22 Javascript
详解webpack编译速度提升之DllPlugin
2019/02/05 Javascript
layui--select使用以及下拉框实现键盘选择的例子
2019/09/24 Javascript
NodeJS模块Buffer原理及使用方法解析
2020/11/11 NodeJs
Python yield 使用浅析
2015/05/28 Python
PyQt5每天必学之工具提示功能
2018/04/19 Python
python xpath获取页面注释的方法
2019/01/14 Python
使用python绘制二元函数图像的实例
2019/02/12 Python
Python实现的排列组合、破解密码算法示例
2019/04/12 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
python删除文件、清空目录的实现方法
2020/09/23 Python
Sony C++笔试题
2013/03/10 面试题
《月球之谜》教学反思
2014/04/10 职场文书
信访工作经验交流材料
2014/05/23 职场文书
公司总经理岗位职责范本
2014/08/15 职场文书
2015年世界水日活动总结
2015/02/09 职场文书
摘录式读书笔记
2015/07/01 职场文书
六年级数学教学反思
2016/02/16 职场文书