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中的JSON模块
Apr 08 Python
Python 遍历列表里面序号和值的方法(三种)
Feb 17 Python
Python之py2exe打包工具详解
Jun 14 Python
python对list中的每个元素进行某种操作的方法
Jun 29 Python
Python爬虫实现简单的爬取有道翻译功能示例
Jul 13 Python
python使用socket 先读取长度,在读取报文内容示例
Sep 26 Python
python实现while循环打印星星的四种形状
Nov 23 Python
详解Python3 中的字符串格式化语法
Jan 15 Python
如何在Anaconda中打开python自带idle
Sep 21 Python
python 爬取哔哩哔哩up主信息和投稿视频
Jun 07 Python
Python中的嵌套循环详情
Mar 23 Python
浅析Python OpenCV三种滤镜效果
Apr 11 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调用数据库的存贮过程
2006/10/09 PHP
模拟xcopy的函数
2006/10/09 PHP
PHP中Date()时间日期函数的使用方法小结
2011/04/20 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
精解window.setTimeout()&window.setInterval()使用方式与参数传递问题!
2007/11/23 Javascript
jQuery基于当前元素进行下一步的遍历
2014/05/20 Javascript
浅谈javascript的分号的使用
2015/05/12 Javascript
vue自定义指令实现v-tap插件
2016/11/03 Javascript
js实现图片放大展示效果
2017/08/30 Javascript
Vue实现点击后文字变色切换方法
2018/02/11 Javascript
JS中的两种数据类型及实现引用类型的深拷贝的方法
2018/08/12 Javascript
Vue中使用vux配置代码详解
2018/09/16 Javascript
详解vue微信网页授权最终解决方案
2019/06/16 Javascript
深入了解JavaScript 防抖和节流
2019/09/12 Javascript
js实现碰撞检测
2021/01/29 Javascript
[02:34]肉山说——泡妞篇
2014/09/16 DOTA
python网络编程学习笔记(四):域名系统
2014/06/09 Python
pandas 两列时间相减换算为秒的方法
2018/04/20 Python
python中多个装饰器的执行顺序详解
2018/10/08 Python
python输出电脑上所有的串口名的方法
2019/07/02 Python
python 画二维、三维点之间的线段实现方法
2019/07/07 Python
浅析使用Python搭建http服务器
2019/10/27 Python
python录音并调用百度语音识别接口的示例
2020/12/01 Python
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
北京振戎融通Java面试题
2015/09/03 面试题
运动会通讯稿200字
2014/02/16 职场文书
党员创先争优活动总结
2014/05/04 职场文书
2014年教师业务学习材料
2014/05/12 职场文书
公司户外活动总结
2014/07/04 职场文书
幼儿园万圣节活动总结
2015/05/05 职场文书
酒店员工手册范本
2015/05/14 职场文书
撤诉申请书法院范本
2015/05/18 职场文书
单位证明范文
2015/06/18 职场文书
Go 语言中 20 个占位符的整理
2021/10/16 Golang