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 相关文章推荐
numpy数组拼接简单示例
Dec 15 Python
使用Python读取安卓手机的屏幕分辨率方法
Mar 31 Python
PyQt5 在label显示的图片中绘制矩形的方法
Jun 17 Python
Pycharm运行加载文本出现错误的解决方法
Jun 27 Python
使用turtle绘制五角星、分形树
Oct 06 Python
python 实现兔子生兔子示例
Nov 21 Python
django 利用Q对象与F对象进行查询的实现
May 15 Python
python pymysql链接数据库查询结果转为Dataframe实例
Jun 05 Python
Pycharm在指定目录下生成文件和删除文件的实现
Dec 28 Python
Python基础之变量的相关知识总结
Jun 23 Python
利用Python读取微信朋友圈的多种方法总结
Aug 23 Python
Python Matplotlib绘制两个Y轴图像
Apr 13 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
redis 队列操作的例子(php)
2012/04/12 PHP
基于php无限分类的深入理解
2013/06/02 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
2014/08/23 PHP
php多次include后导致全局变量global失效的解决方法
2015/02/28 PHP
JavaScript 获取事件对象的注意点
2009/07/29 Javascript
使用JS读秒使用示例
2013/09/21 Javascript
jquery垂直公告滚动实现代码
2013/12/08 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
JS小游戏之宇宙战机源码详解
2014/09/25 Javascript
js中for in语句的用法讲解
2015/04/24 Javascript
javascript实现将文件保存到本地方法汇总
2015/07/26 Javascript
Bootstrap编写一个兼容主流浏览器的受众门户式风格页面
2016/07/01 Javascript
实例详解jQuery的无new构建
2016/08/02 Javascript
Node.js复制文件的方法示例
2016/12/29 Javascript
JavaScript省市级联下拉菜单实例
2017/02/14 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
动态创建Angular组件实现popup弹窗功能
2017/09/15 Javascript
手把手教你使用vue-cli脚手架(图文解析)
2017/11/08 Javascript
将Django使用的数据库从MySQL迁移到PostgreSQL的教程
2015/04/11 Python
自学python的建议和周期预算
2019/01/30 Python
django的ORM操作 增加和查询
2019/07/26 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
2020/01/08 Python
Python类的动态绑定实现原理
2020/03/21 Python
python3 中使用urllib问题以及urllib详解
2020/08/03 Python
CSS3按钮鼠标悬浮实现光圈效果源码
2016/09/11 HTML / CSS
HTML5触摸事件实现移动端简易进度条的实现方法
2018/05/04 HTML / CSS
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
美国领先的奢侈美容零售商:Bluemercury
2017/07/26 全球购物
英国床和浴室商场:Bed & Bath Emporium
2018/05/20 全球购物
信息管理专业推荐信
2013/10/29 职场文书
王力宏牛津大学演讲稿
2014/05/22 职场文书
2015年妇联工作总结范文
2015/04/22 职场文书
2016寒假假期总结
2015/10/10 职场文书
班主任寄语2016
2015/12/04 职场文书
ConditionalOnProperty配置swagger不生效问题及解决
2022/06/14 Java/Android