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处理cookie详解
Feb 07 Python
python通过函数属性实现全局变量的方法
May 16 Python
Python备份目录及目录下的全部内容的实现方法
Jun 12 Python
Pytorch入门之mnist分类实例
Apr 14 Python
python 将字符串完成特定的向右移动方法
Jun 11 Python
python操作kafka实践的示例代码
Jun 19 Python
java中的控制结构(if,循环)详解
Jun 26 Python
python3.6+selenium实现操作Frame中的页面元素
Jul 16 Python
python操作gitlab API过程解析
Dec 27 Python
python模式 工厂模式原理及实例详解
Feb 11 Python
Python 实现自动登录+点击+滑动验证功能
Jun 10 Python
通过cmd进入python的步骤
Jun 16 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
Laravel5权限管理方法详解
2016/07/26 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
2020/04/13 PHP
JS 常用校验函数
2009/03/26 Javascript
ASP.NET jQuery 实例1(在TextBox里面创建一个默认提示)
2012/01/13 Javascript
JavaScript中读取和保存文件实例
2014/05/08 Javascript
javascript数组操作方法小结和3个属性详细介绍
2014/07/05 Javascript
超赞的动手创建JavaScript框架的详细教程
2015/06/30 Javascript
jQuery实现的指纹扫描效果实例(附演示与demo源码下载)
2016/01/26 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
浅析jquery与checkbox的checked属性的问题
2016/04/27 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
原生js实现ajax方法(超简单)
2016/09/20 Javascript
jQuery实现弹幕效果
2017/02/17 Javascript
jQuery实现仿京东防抖动菜单效果示例
2018/07/06 jQuery
浅谈Vue组件及组件的注册方法
2018/08/24 Javascript
JavaScript学习笔记之DOM操作实例分析
2019/01/08 Javascript
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
python在ubuntu中的几种安装方法(小结)
2017/12/08 Python
Python的高阶函数用法实例分析
2019/04/11 Python
使用python快速在局域网内搭建http传输文件服务的方法
2019/11/14 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
2020/04/13 Python
Python应用实现双指数函数及拟合代码实例
2020/06/19 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
TensorFlow低版本代码自动升级为1.0版本
2021/02/20 Python
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
莫斯科高科技在线商店:KremlinStore
2019/03/13 全球购物
一份创业计划书范文
2014/02/08 职场文书
八一建军节感言
2014/02/28 职场文书
项目经理任命书内容
2014/06/06 职场文书
消防工作实施方案
2014/06/09 职场文书
2014年预备党员端正入党动机思想汇报
2014/09/13 职场文书
2014年村党支部工作总结
2014/12/04 职场文书
工作收入证明范本
2015/06/12 职场文书
班级管理经验交流材料
2015/11/02 职场文书
小学二年级班主任工作经验交流材料
2015/11/02 职场文书
vue elementUI批量上传文件
2022/04/26 Vue.js