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采集腾讯新闻实例
Jul 10 Python
使用python编写脚本获取手机当前应用apk的信息
Jul 21 Python
python 删除字符串中连续多个空格并保留一个的方法
Dec 22 Python
python中使用 xlwt 操作excel的常见方法与问题
Jan 13 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
Feb 07 Python
Python玩转PDF的各种骚操作
May 06 Python
Python流行ORM框架sqlalchemy安装与使用教程
Jun 04 Python
全面了解django的缓存机制及使用方法
Jul 22 Python
python自动识别文本编码格式代码
Dec 26 Python
在python中利用pycharm自定义代码块教程(三步搞定)
Apr 15 Python
python中matplotlib实现随鼠标滑动自动标注代码
Apr 23 Python
python文件编写好后如何实践
Jul 07 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超大文件下载,断点续传下载的方法详解
2013/06/06 PHP
php预定义变量使用帮助(带实例)
2013/10/30 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
2014/01/22 PHP
smarty简单分页的实现方法
2014/10/27 PHP
php判断文件夹是否存在不存在则创建
2015/04/09 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
2015/11/18 PHP
PHP单例模式模拟Java Bean实现方法示例
2018/12/07 PHP
封装好的省市地区联动控件附下载
2007/08/13 Javascript
js弹出层之1:JQuery.Boxy (二)
2011/10/06 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
2013/04/24 Javascript
JS实现定时页面弹出类似QQ新闻的提示框
2013/11/07 Javascript
如何在JavaScript中实现私有属性的写类方式(一)
2013/12/04 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
2016/07/22 Javascript
Vue.js每天必学之指令系统与自定义指令
2016/09/07 Javascript
初探nodeJS
2017/01/24 NodeJs
微信小程序 template模板详解及实例
2017/02/21 Javascript
微信小程序 页面跳转及数据传递详解
2017/03/14 Javascript
NodeJS基础API搭建服务器详细过程记录
2017/04/01 NodeJs
vuejs使用$emit和$on进行组件之间的传值的示例
2017/10/04 Javascript
vue2实现数据请求显示loading图
2017/11/28 Javascript
Vue通过WebSocket建立长连接的实现代码
2019/11/05 Javascript
Python中使用pprint函数进行格式化输出的教程
2015/04/07 Python
在Python的Flask框架下使用sqlalchemy库的简单教程
2015/04/09 Python
Python安装使用命令行交互模块pexpect的基础教程
2016/05/12 Python
从DataFrame中提取出Series或DataFrame对象的方法
2018/11/10 Python
python实现动态创建类的方法分析
2019/06/25 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
Agoda西班牙:全球特价酒店预订
2017/06/03 全球购物
给幼儿园老师的表扬信
2014/01/19 职场文书
提拔干部考察材料
2014/05/26 职场文书
国际经济贸易专业自荐信
2014/06/13 职场文书
优秀应届生求职信
2014/06/16 职场文书
2014年化工厂工作总结
2014/11/25 职场文书
人事聘任通知
2015/04/21 职场文书
2015教师个人德育工作总结
2015/07/22 职场文书