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监控网站运行异常并发送邮件的方法
Mar 13 Python
python之Socket网络编程详解
Sep 29 Python
python3大文件解压和基本操作
Dec 15 Python
基于Python log 的正确打开方式
Apr 28 Python
Python3 执行Linux Bash命令的方法
Jul 12 Python
Python3 chardet模块查看编码格式的例子
Aug 14 Python
Python多线程爬取豆瓣影评API接口
Oct 22 Python
Python 过滤错误log并导出的实例
Dec 26 Python
安装完Python包然后找不到模块的解决步骤
Feb 13 Python
python def 定义函数,调用函数方式
Jun 02 Python
Python操作word文档插入图片和表格的实例演示
Oct 25 Python
Python基于百度AI实现抓取表情包
Jun 27 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
探讨:如何使用PhpDocumentor生成文档
2013/06/25 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
[原创]php简单防盗链验证实现方法
2016/07/09 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
2016/07/20 PHP
PHP设计模式之装饰器模式定义与用法详解
2018/04/02 PHP
基于jQuery实现点击同时更改两个iframe的网址
2010/07/01 Javascript
浅析Cookie中的Path与domain
2013/12/18 Javascript
input禁止键盘及中文输入,但可以点击
2014/02/13 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
2014/04/08 Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
2014/05/08 Javascript
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
javascript中replace( )方法的使用
2015/04/24 Javascript
BootStrap table使用方法分析
2016/11/08 Javascript
jquery.multiselect多选下拉框实现代码
2016/11/11 Javascript
Angular实现的日程表功能【可添加及隐藏显示内容】
2017/12/27 Javascript
浅谈Vue数据绑定的原理
2018/01/08 Javascript
webpack之引入图片的实现及问题
2018/10/08 Javascript
js实现3D旋转相册
2020/08/02 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
2020/08/11 Javascript
JavaScript中的几种继承方法示例
2020/12/06 Javascript
python实现维吉尼亚算法
2019/03/20 Python
Python文件路径名的操作方法
2019/10/30 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
Python ckeditor富文本编辑器代码实例解析
2020/06/22 Python
OpenCV利用python来实现图像的直方图均衡化
2020/10/21 Python
css3实现针线缝合效果(图解步骤)
2013/02/04 HTML / CSS
巴西独家产品和现场演示购物网站:Shoptime
2019/07/11 全球购物
eharmony澳大利亚:网上约会服务
2020/02/29 全球购物
医药大学生求职简历的自我评价
2013/10/17 职场文书
竞选纪律委员演讲稿
2014/09/13 职场文书
乡镇领导干部个人对照检查材料思想汇报
2014/09/23 职场文书
优秀少先队员事迹材料
2014/12/24 职场文书
2015年国庆晚会主持词
2015/07/01 职场文书
体育教师教学随笔
2015/08/15 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书
读《瓦尔登湖》有感:每个人都需要一个瓦尔登湖
2019/10/17 职场文书