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 相关文章推荐
pyramid配置session的方法教程
Nov 27 Python
python解析html提取数据,并生成word文档实例解析
Jan 22 Python
对numpy中shape的深入理解
Jun 15 Python
python opencv实现旋转矩形框裁减功能
Jul 25 Python
使用python的pandas库读取csv文件保存至mysql数据库
Aug 20 Python
Python程序打包工具py2exe和PyInstaller详解
Jun 28 Python
关于Python 常用获取元素 Driver 总结
Nov 24 Python
python topk()函数求最大和最小值实例
Apr 02 Python
Python文件时间操作步骤代码详解
Apr 13 Python
如何把python项目部署到linux服务器
Aug 26 Python
python collections模块的使用
Oct 16 Python
python中实现栈的三种方法
Dec 19 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函数篇详解十进制、二进制、八进制和十六进制转换函数说明
2011/12/05 PHP
关于PHP语言构造器介绍
2013/07/08 PHP
php检查是否是ajax请求的方法
2015/04/16 PHP
PHP Redis扩展无法加载的问题解决方法
2019/08/22 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
php获取小程序码的实现代码(B类接口)
2020/06/13 PHP
My Desktop :) 桌面式代码
2008/12/29 Javascript
jQuery UI-Draggable 参数集合
2010/01/10 Javascript
jquery中通过过滤器获取表单元素的实现代码
2011/07/05 Javascript
jQuery 阴影插件代码分享
2012/01/09 Javascript
浏览器缩放检测的js代码
2014/09/28 Javascript
JS实现简单的键盘打字的效果
2015/04/24 Javascript
jquery实现用户信息修改验证输入方法汇总
2015/07/18 Javascript
Javascript模仿淘宝信用评价实例(附源码)
2015/11/26 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
2017/02/08 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
vue-cli构建项目使用 less的方法
2017/10/04 Javascript
angular inputNumber指令输入框只能输入数字的实现
2019/12/03 Javascript
JS中的变量作用域(console版)
2020/07/18 Javascript
Python实现的排列组合计算操作示例
2017/10/13 Python
Python入门之三角函数全解【收藏】
2017/11/08 Python
快速了解Python开发中的cookie及简单代码示例
2018/01/17 Python
使用Python监控文件内容变化代码实例
2018/06/04 Python
Python 输入一个数字判断成绩分数等级的方法
2018/11/15 Python
python中xlutils库用法浅析
2020/12/29 Python
Python中Pyspider爬虫框架的基本使用详解
2021/01/27 Python
美国知名运动产品零售商:Foot Locker
2016/07/23 全球购物
SOKOLOV官网:俄罗斯珠宝首饰品牌
2021/01/02 全球购物
幼儿园美术教学反思
2014/01/31 职场文书
酒店七夕情人节活动策划方案
2014/08/24 职场文书
mysql 如何获取两个集合的交集/差集/并集
2021/06/08 MySQL
ObjectMapper 如何忽略字段大小写
2021/06/29 Java/Android