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获取文件ssdeep值的方法
Oct 05 Python
Python 3.x 新特性及10大变化
Jun 12 Python
Python list操作用法总结
Nov 10 Python
编写Python小程序来统计测试脚本的关键字
Mar 12 Python
python实现搜索文本文件内容脚本
Jun 22 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
Jul 27 Python
pygame实现烟雨蒙蒙下彩虹雨
Nov 11 Python
如何基于Python获取图片的物理尺寸
Nov 25 Python
Python常用数字处理基本操作汇总
Sep 10 Python
详解Open Folder as PyCharm Project怎么添加的方法
Dec 29 Python
解决numpy和torch数据类型转化的问题
May 23 Python
python blinker 信号库
May 04 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 进程锁定问题分析研究
2009/11/24 PHP
PHP __autoload函数(自动载入类文件)的使用方法
2012/02/04 PHP
解决php接收shell返回的结果中文乱码问题
2014/01/23 PHP
PHP读取大文件末尾N行的高效方法推荐
2016/06/03 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
JavaScript 对象成员的可见性说明
2009/10/16 Javascript
Jquery中给animation加更多的运作效果实例
2013/09/05 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/20 Javascript
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
jquery的ajax异步请求接收返回json数据实例
2014/06/16 Javascript
jquery图片播放浏览插件prettyPhoto使用详解
2014/12/19 Javascript
javascript使用Promise对象实现异步编程
2016/03/01 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
pc加载更多功能和移动端下拉刷新加载数据
2016/11/07 Javascript
怎样判断jQuery当前元素是隐藏还是显示
2016/11/23 Javascript
浅谈Koa2框架利用CORS完成跨域ajax请求
2018/03/06 Javascript
django js 实现表格动态标序号的实例代码
2019/07/12 Javascript
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
2019/09/06 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
2020/07/17 Javascript
JavaScript实现点击图片换背景
2020/11/20 Javascript
Python入门篇之函数
2014/10/20 Python
python从sqlite读取并显示数据的方法
2015/05/08 Python
利用python批量给云主机配置安全组的方法教程
2017/06/21 Python
python使用Flask操作mysql实现登录功能
2018/05/14 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
2019/12/19 Python
Python turtle画图库&&画姓名实例
2020/01/19 Python
Python多线程threading创建及使用方法解析
2020/06/17 Python
python中线程和进程有何区别
2020/06/17 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
2021/03/03 Python
Html5新特性用canvas标签画多条直线附效果截图
2014/06/30 HTML / CSS
交通事故协议书范文
2014/04/16 职场文书
教研活动总结
2014/04/28 职场文书
物业品质提升方案
2014/06/08 职场文书
村党支部群众路线教育实践活动对照检查材料
2014/09/26 职场文书
贷款担保书范本
2015/09/22 职场文书
关于python中模块和重载的问题
2021/11/02 Python